<!DOCTYPE html>
<html>
<head><meta charset="utf-8" />
<title>ch15-autoencoders</title>

<script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>

<style type="text/css">
    /*!
*
* Twitter Bootstrap
*
*/
/*!
 * Bootstrap v3.3.6 (http://getbootstrap.com)
 * Copyright 2011-2015 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */
/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
html {
  font-family: sans-serif;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
body {
  margin: 0;
}
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
  display: block;
}
audio,
canvas,
progress,
video {
  display: inline-block;
  vertical-align: baseline;
}
audio:not([controls]) {
  display: none;
  height: 0;
}
[hidden],
template {
  display: none;
}
a {
  background-color: transparent;
}
a:active,
a:hover {
  outline: 0;
}
abbr[title] {
  border-bottom: 1px dotted;
}
b,
strong {
  font-weight: bold;
}
dfn {
  font-style: italic;
}
h1 {
  font-size: 2em;
  margin: 0.67em 0;
}
mark {
  background: #ff0;
  color: #000;
}
small {
  font-size: 80%;
}
sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}
sup {
  top: -0.5em;
}
sub {
  bottom: -0.25em;
}
img {
  border: 0;
}
svg:not(:root) {
  overflow: hidden;
}
figure {
  margin: 1em 40px;
}
hr {
  box-sizing: content-box;
  height: 0;
}
pre {
  overflow: auto;
}
code,
kbd,
pre,
samp {
  font-family: monospace, monospace;
  font-size: 1em;
}
button,
input,
optgroup,
select,
textarea {
  color: inherit;
  font: inherit;
  margin: 0;
}
button {
  overflow: visible;
}
button,
select {
  text-transform: none;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
  -webkit-appearance: button;
  cursor: pointer;
}
button[disabled],
html input[disabled] {
  cursor: default;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
  border: 0;
  padding: 0;
}
input {
  line-height: normal;
}
input[type="checkbox"],
input[type="radio"] {
  box-sizing: border-box;
  padding: 0;
}
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: textfield;
  box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
  -webkit-appearance: none;
}
fieldset {
  border: 1px solid #c0c0c0;
  margin: 0 2px;
  padding: 0.35em 0.625em 0.75em;
}
legend {
  border: 0;
  padding: 0;
}
textarea {
  overflow: auto;
}
optgroup {
  font-weight: bold;
}
table {
  border-collapse: collapse;
  border-spacing: 0;
}
td,
th {
  padding: 0;
}
/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
@media print {
  *,
  *:before,
  *:after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important;
  }
  a,
  a:visited {
    text-decoration: underline;
  }
  a[href]:after {
    content: " (" attr(href) ")";
  }
  abbr[title]:after {
    content: " (" attr(title) ")";
  }
  a[href^="#"]:after,
  a[href^="javascript:"]:after {
    content: "";
  }
  pre,
  blockquote {
    border: 1px solid #999;
    page-break-inside: avoid;
  }
  thead {
    display: table-header-group;
  }
  tr,
  img {
    page-break-inside: avoid;
  }
  img {
    max-width: 100% !important;
  }
  p,
  h2,
  h3 {
    orphans: 3;
    widows: 3;
  }
  h2,
  h3 {
    page-break-after: avoid;
  }
  .navbar {
    display: none;
  }
  .btn > .caret,
  .dropup > .btn > .caret {
    border-top-color: #000 !important;
  }
  .label {
    border: 1px solid #000;
  }
  .table {
    border-collapse: collapse !important;
  }
  .table td,
  .table th {
    background-color: #fff !important;
  }
  .table-bordered th,
  .table-bordered td {
    border: 1px solid #ddd !important;
  }
}
@font-face {
  font-family: 'Glyphicons Halflings';
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot');
  src: url('../components/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../components/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}
.glyphicon {
  position: relative;
  top: 1px;
  display: inline-block;
  font-family: 'Glyphicons Halflings';
  font-style: normal;
  font-weight: normal;
  line-height: 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.glyphicon-asterisk:before {
  content: "\002a";
}
.glyphicon-plus:before {
  content: "\002b";
}
.glyphicon-euro:before,
.glyphicon-eur:before {
  content: "\20ac";
}
.glyphicon-minus:before {
  content: "\2212";
}
.glyphicon-cloud:before {
  content: "\2601";
}
.glyphicon-envelope:before {
  content: "\2709";
}
.glyphicon-pencil:before {
  content: "\270f";
}
.glyphicon-glass:before {
  content: "\e001";
}
.glyphicon-music:before {
  content: "\e002";
}
.glyphicon-search:before {
  content: "\e003";
}
.glyphicon-heart:before {
  content: "\e005";
}
.glyphicon-star:before {
  content: "\e006";
}
.glyphicon-star-empty:before {
  content: "\e007";
}
.glyphicon-user:before {
  content: "\e008";
}
.glyphicon-film:before {
  content: "\e009";
}
.glyphicon-th-large:before {
  content: "\e010";
}
.glyphicon-th:before {
  content: "\e011";
}
.glyphicon-th-list:before {
  content: "\e012";
}
.glyphicon-ok:before {
  content: "\e013";
}
.glyphicon-remove:before {
  content: "\e014";
}
.glyphicon-zoom-in:before {
  content: "\e015";
}
.glyphicon-zoom-out:before {
  content: "\e016";
}
.glyphicon-off:before {
  content: "\e017";
}
.glyphicon-signal:before {
  content: "\e018";
}
.glyphicon-cog:before {
  content: "\e019";
}
.glyphicon-trash:before {
  content: "\e020";
}
.glyphicon-home:before {
  content: "\e021";
}
.glyphicon-file:before {
  content: "\e022";
}
.glyphicon-time:before {
  content: "\e023";
}
.glyphicon-road:before {
  content: "\e024";
}
.glyphicon-download-alt:before {
  content: "\e025";
}
.glyphicon-download:before {
  content: "\e026";
}
.glyphicon-upload:before {
  content: "\e027";
}
.glyphicon-inbox:before {
  content: "\e028";
}
.glyphicon-play-circle:before {
  content: "\e029";
}
.glyphicon-repeat:before {
  content: "\e030";
}
.glyphicon-refresh:before {
  content: "\e031";
}
.glyphicon-list-alt:before {
  content: "\e032";
}
.glyphicon-lock:before {
  content: "\e033";
}
.glyphicon-flag:before {
  content: "\e034";
}
.glyphicon-headphones:before {
  content: "\e035";
}
.glyphicon-volume-off:before {
  content: "\e036";
}
.glyphicon-volume-down:before {
  content: "\e037";
}
.glyphicon-volume-up:before {
  content: "\e038";
}
.glyphicon-qrcode:before {
  content: "\e039";
}
.glyphicon-barcode:before {
  content: "\e040";
}
.glyphicon-tag:before {
  content: "\e041";
}
.glyphicon-tags:before {
  content: "\e042";
}
.glyphicon-book:before {
  content: "\e043";
}
.glyphicon-bookmark:before {
  content: "\e044";
}
.glyphicon-print:before {
  content: "\e045";
}
.glyphicon-camera:before {
  content: "\e046";
}
.glyphicon-font:before {
  content: "\e047";
}
.glyphicon-bold:before {
  content: "\e048";
}
.glyphicon-italic:before {
  content: "\e049";
}
.glyphicon-text-height:before {
  content: "\e050";
}
.glyphicon-text-width:before {
  content: "\e051";
}
.glyphicon-align-left:before {
  content: "\e052";
}
.glyphicon-align-center:before {
  content: "\e053";
}
.glyphicon-align-right:before {
  content: "\e054";
}
.glyphicon-align-justify:before {
  content: "\e055";
}
.glyphicon-list:before {
  content: "\e056";
}
.glyphicon-indent-left:before {
  content: "\e057";
}
.glyphicon-indent-right:before {
  content: "\e058";
}
.glyphicon-facetime-video:before {
  content: "\e059";
}
.glyphicon-picture:before {
  content: "\e060";
}
.glyphicon-map-marker:before {
  content: "\e062";
}
.glyphicon-adjust:before {
  content: "\e063";
}
.glyphicon-tint:before {
  content: "\e064";
}
.glyphicon-edit:before {
  content: "\e065";
}
.glyphicon-share:before {
  content: "\e066";
}
.glyphicon-check:before {
  content: "\e067";
}
.glyphicon-move:before {
  content: "\e068";
}
.glyphicon-step-backward:before {
  content: "\e069";
}
.glyphicon-fast-backward:before {
  content: "\e070";
}
.glyphicon-backward:before {
  content: "\e071";
}
.glyphicon-play:before {
  content: "\e072";
}
.glyphicon-pause:before {
  content: "\e073";
}
.glyphicon-stop:before {
  content: "\e074";
}
.glyphicon-forward:before {
  content: "\e075";
}
.glyphicon-fast-forward:before {
  content: "\e076";
}
.glyphicon-step-forward:before {
  content: "\e077";
}
.glyphicon-eject:before {
  content: "\e078";
}
.glyphicon-chevron-left:before {
  content: "\e079";
}
.glyphicon-chevron-right:before {
  content: "\e080";
}
.glyphicon-plus-sign:before {
  content: "\e081";
}
.glyphicon-minus-sign:before {
  content: "\e082";
}
.glyphicon-remove-sign:before {
  content: "\e083";
}
.glyphicon-ok-sign:before {
  content: "\e084";
}
.glyphicon-question-sign:before {
  content: "\e085";
}
.glyphicon-info-sign:before {
  content: "\e086";
}
.glyphicon-screenshot:before {
  content: "\e087";
}
.glyphicon-remove-circle:before {
  content: "\e088";
}
.glyphicon-ok-circle:before {
  content: "\e089";
}
.glyphicon-ban-circle:before {
  content: "\e090";
}
.glyphicon-arrow-left:before {
  content: "\e091";
}
.glyphicon-arrow-right:before {
  content: "\e092";
}
.glyphicon-arrow-up:before {
  content: "\e093";
}
.glyphicon-arrow-down:before {
  content: "\e094";
}
.glyphicon-share-alt:before {
  content: "\e095";
}
.glyphicon-resize-full:before {
  content: "\e096";
}
.glyphicon-resize-small:before {
  content: "\e097";
}
.glyphicon-exclamation-sign:before {
  content: "\e101";
}
.glyphicon-gift:before {
  content: "\e102";
}
.glyphicon-leaf:before {
  content: "\e103";
}
.glyphicon-fire:before {
  content: "\e104";
}
.glyphicon-eye-open:before {
  content: "\e105";
}
.glyphicon-eye-close:before {
  content: "\e106";
}
.glyphicon-warning-sign:before {
  content: "\e107";
}
.glyphicon-plane:before {
  content: "\e108";
}
.glyphicon-calendar:before {
  content: "\e109";
}
.glyphicon-random:before {
  content: "\e110";
}
.glyphicon-comment:before {
  content: "\e111";
}
.glyphicon-magnet:before {
  content: "\e112";
}
.glyphicon-chevron-up:before {
  content: "\e113";
}
.glyphicon-chevron-down:before {
  content: "\e114";
}
.glyphicon-retweet:before {
  content: "\e115";
}
.glyphicon-shopping-cart:before {
  content: "\e116";
}
.glyphicon-folder-close:before {
  content: "\e117";
}
.glyphicon-folder-open:before {
  content: "\e118";
}
.glyphicon-resize-vertical:before {
  content: "\e119";
}
.glyphicon-resize-horizontal:before {
  content: "\e120";
}
.glyphicon-hdd:before {
  content: "\e121";
}
.glyphicon-bullhorn:before {
  content: "\e122";
}
.glyphicon-bell:before {
  content: "\e123";
}
.glyphicon-certificate:before {
  content: "\e124";
}
.glyphicon-thumbs-up:before {
  content: "\e125";
}
.glyphicon-thumbs-down:before {
  content: "\e126";
}
.glyphicon-hand-right:before {
  content: "\e127";
}
.glyphicon-hand-left:before {
  content: "\e128";
}
.glyphicon-hand-up:before {
  content: "\e129";
}
.glyphicon-hand-down:before {
  content: "\e130";
}
.glyphicon-circle-arrow-right:before {
  content: "\e131";
}
.glyphicon-circle-arrow-left:before {
  content: "\e132";
}
.glyphicon-circle-arrow-up:before {
  content: "\e133";
}
.glyphicon-circle-arrow-down:before {
  content: "\e134";
}
.glyphicon-globe:before {
  content: "\e135";
}
.glyphicon-wrench:before {
  content: "\e136";
}
.glyphicon-tasks:before {
  content: "\e137";
}
.glyphicon-filter:before {
  content: "\e138";
}
.glyphicon-briefcase:before {
  content: "\e139";
}
.glyphicon-fullscreen:before {
  content: "\e140";
}
.glyphicon-dashboard:before {
  content: "\e141";
}
.glyphicon-paperclip:before {
  content: "\e142";
}
.glyphicon-heart-empty:before {
  content: "\e143";
}
.glyphicon-link:before {
  content: "\e144";
}
.glyphicon-phone:before {
  content: "\e145";
}
.glyphicon-pushpin:before {
  content: "\e146";
}
.glyphicon-usd:before {
  content: "\e148";
}
.glyphicon-gbp:before {
  content: "\e149";
}
.glyphicon-sort:before {
  content: "\e150";
}
.glyphicon-sort-by-alphabet:before {
  content: "\e151";
}
.glyphicon-sort-by-alphabet-alt:before {
  content: "\e152";
}
.glyphicon-sort-by-order:before {
  content: "\e153";
}
.glyphicon-sort-by-order-alt:before {
  content: "\e154";
}
.glyphicon-sort-by-attributes:before {
  content: "\e155";
}
.glyphicon-sort-by-attributes-alt:before {
  content: "\e156";
}
.glyphicon-unchecked:before {
  content: "\e157";
}
.glyphicon-expand:before {
  content: "\e158";
}
.glyphicon-collapse-down:before {
  content: "\e159";
}
.glyphicon-collapse-up:before {
  content: "\e160";
}
.glyphicon-log-in:before {
  content: "\e161";
}
.glyphicon-flash:before {
  content: "\e162";
}
.glyphicon-log-out:before {
  content: "\e163";
}
.glyphicon-new-window:before {
  content: "\e164";
}
.glyphicon-record:before {
  content: "\e165";
}
.glyphicon-save:before {
  content: "\e166";
}
.glyphicon-open:before {
  content: "\e167";
}
.glyphicon-saved:before {
  content: "\e168";
}
.glyphicon-import:before {
  content: "\e169";
}
.glyphicon-export:before {
  content: "\e170";
}
.glyphicon-send:before {
  content: "\e171";
}
.glyphicon-floppy-disk:before {
  content: "\e172";
}
.glyphicon-floppy-saved:before {
  content: "\e173";
}
.glyphicon-floppy-remove:before {
  content: "\e174";
}
.glyphicon-floppy-save:before {
  content: "\e175";
}
.glyphicon-floppy-open:before {
  content: "\e176";
}
.glyphicon-credit-card:before {
  content: "\e177";
}
.glyphicon-transfer:before {
  content: "\e178";
}
.glyphicon-cutlery:before {
  content: "\e179";
}
.glyphicon-header:before {
  content: "\e180";
}
.glyphicon-compressed:before {
  content: "\e181";
}
.glyphicon-earphone:before {
  content: "\e182";
}
.glyphicon-phone-alt:before {
  content: "\e183";
}
.glyphicon-tower:before {
  content: "\e184";
}
.glyphicon-stats:before {
  content: "\e185";
}
.glyphicon-sd-video:before {
  content: "\e186";
}
.glyphicon-hd-video:before {
  content: "\e187";
}
.glyphicon-subtitles:before {
  content: "\e188";
}
.glyphicon-sound-stereo:before {
  content: "\e189";
}
.glyphicon-sound-dolby:before {
  content: "\e190";
}
.glyphicon-sound-5-1:before {
  content: "\e191";
}
.glyphicon-sound-6-1:before {
  content: "\e192";
}
.glyphicon-sound-7-1:before {
  content: "\e193";
}
.glyphicon-copyright-mark:before {
  content: "\e194";
}
.glyphicon-registration-mark:before {
  content: "\e195";
}
.glyphicon-cloud-download:before {
  content: "\e197";
}
.glyphicon-cloud-upload:before {
  content: "\e198";
}
.glyphicon-tree-conifer:before {
  content: "\e199";
}
.glyphicon-tree-deciduous:before {
  content: "\e200";
}
.glyphicon-cd:before {
  content: "\e201";
}
.glyphicon-save-file:before {
  content: "\e202";
}
.glyphicon-open-file:before {
  content: "\e203";
}
.glyphicon-level-up:before {
  content: "\e204";
}
.glyphicon-copy:before {
  content: "\e205";
}
.glyphicon-paste:before {
  content: "\e206";
}
.glyphicon-alert:before {
  content: "\e209";
}
.glyphicon-equalizer:before {
  content: "\e210";
}
.glyphicon-king:before {
  content: "\e211";
}
.glyphicon-queen:before {
  content: "\e212";
}
.glyphicon-pawn:before {
  content: "\e213";
}
.glyphicon-bishop:before {
  content: "\e214";
}
.glyphicon-knight:before {
  content: "\e215";
}
.glyphicon-baby-formula:before {
  content: "\e216";
}
.glyphicon-tent:before {
  content: "\26fa";
}
.glyphicon-blackboard:before {
  content: "\e218";
}
.glyphicon-bed:before {
  content: "\e219";
}
.glyphicon-apple:before {
  content: "\f8ff";
}
.glyphicon-erase:before {
  content: "\e221";
}
.glyphicon-hourglass:before {
  content: "\231b";
}
.glyphicon-lamp:before {
  content: "\e223";
}
.glyphicon-duplicate:before {
  content: "\e224";
}
.glyphicon-piggy-bank:before {
  content: "\e225";
}
.glyphicon-scissors:before {
  content: "\e226";
}
.glyphicon-bitcoin:before {
  content: "\e227";
}
.glyphicon-btc:before {
  content: "\e227";
}
.glyphicon-xbt:before {
  content: "\e227";
}
.glyphicon-yen:before {
  content: "\00a5";
}
.glyphicon-jpy:before {
  content: "\00a5";
}
.glyphicon-ruble:before {
  content: "\20bd";
}
.glyphicon-rub:before {
  content: "\20bd";
}
.glyphicon-scale:before {
  content: "\e230";
}
.glyphicon-ice-lolly:before {
  content: "\e231";
}
.glyphicon-ice-lolly-tasted:before {
  content: "\e232";
}
.glyphicon-education:before {
  content: "\e233";
}
.glyphicon-option-horizontal:before {
  content: "\e234";
}
.glyphicon-option-vertical:before {
  content: "\e235";
}
.glyphicon-menu-hamburger:before {
  content: "\e236";
}
.glyphicon-modal-window:before {
  content: "\e237";
}
.glyphicon-oil:before {
  content: "\e238";
}
.glyphicon-grain:before {
  content: "\e239";
}
.glyphicon-sunglasses:before {
  content: "\e240";
}
.glyphicon-text-size:before {
  content: "\e241";
}
.glyphicon-text-color:before {
  content: "\e242";
}
.glyphicon-text-background:before {
  content: "\e243";
}
.glyphicon-object-align-top:before {
  content: "\e244";
}
.glyphicon-object-align-bottom:before {
  content: "\e245";
}
.glyphicon-object-align-horizontal:before {
  content: "\e246";
}
.glyphicon-object-align-left:before {
  content: "\e247";
}
.glyphicon-object-align-vertical:before {
  content: "\e248";
}
.glyphicon-object-align-right:before {
  content: "\e249";
}
.glyphicon-triangle-right:before {
  content: "\e250";
}
.glyphicon-triangle-left:before {
  content: "\e251";
}
.glyphicon-triangle-bottom:before {
  content: "\e252";
}
.glyphicon-triangle-top:before {
  content: "\e253";
}
.glyphicon-console:before {
  content: "\e254";
}
.glyphicon-superscript:before {
  content: "\e255";
}
.glyphicon-subscript:before {
  content: "\e256";
}
.glyphicon-menu-left:before {
  content: "\e257";
}
.glyphicon-menu-right:before {
  content: "\e258";
}
.glyphicon-menu-down:before {
  content: "\e259";
}
.glyphicon-menu-up:before {
  content: "\e260";
}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
*:before,
*:after {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
html {
  font-size: 10px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  line-height: 1.42857143;
  color: #000;
  background-color: #fff;
}
input,
button,
select,
textarea {
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}
a {
  color: #337ab7;
  text-decoration: none;
}
a:hover,
a:focus {
  color: #23527c;
  text-decoration: underline;
}
a:focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
figure {
  margin: 0;
}
img {
  vertical-align: middle;
}
.img-responsive,
.thumbnail > img,
.thumbnail a > img,
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  display: block;
  max-width: 100%;
  height: auto;
}
.img-rounded {
  border-radius: 3px;
}
.img-thumbnail {
  padding: 4px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;
  display: inline-block;
  max-width: 100%;
  height: auto;
}
.img-circle {
  border-radius: 50%;
}
hr {
  margin-top: 18px;
  margin-bottom: 18px;
  border: 0;
  border-top: 1px solid #eeeeee;
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
[role="button"] {
  cursor: pointer;
}
h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
  font-family: inherit;
  font-weight: 500;
  line-height: 1.1;
  color: inherit;
}
h1 small,
h2 small,
h3 small,
h4 small,
h5 small,
h6 small,
.h1 small,
.h2 small,
.h3 small,
.h4 small,
.h5 small,
.h6 small,
h1 .small,
h2 .small,
h3 .small,
h4 .small,
h5 .small,
h6 .small,
.h1 .small,
.h2 .small,
.h3 .small,
.h4 .small,
.h5 .small,
.h6 .small {
  font-weight: normal;
  line-height: 1;
  color: #777777;
}
h1,
.h1,
h2,
.h2,
h3,
.h3 {
  margin-top: 18px;
  margin-bottom: 9px;
}
h1 small,
.h1 small,
h2 small,
.h2 small,
h3 small,
.h3 small,
h1 .small,
.h1 .small,
h2 .small,
.h2 .small,
h3 .small,
.h3 .small {
  font-size: 65%;
}
h4,
.h4,
h5,
.h5,
h6,
.h6 {
  margin-top: 9px;
  margin-bottom: 9px;
}
h4 small,
.h4 small,
h5 small,
.h5 small,
h6 small,
.h6 small,
h4 .small,
.h4 .small,
h5 .small,
.h5 .small,
h6 .small,
.h6 .small {
  font-size: 75%;
}
h1,
.h1 {
  font-size: 33px;
}
h2,
.h2 {
  font-size: 27px;
}
h3,
.h3 {
  font-size: 23px;
}
h4,
.h4 {
  font-size: 17px;
}
h5,
.h5 {
  font-size: 13px;
}
h6,
.h6 {
  font-size: 12px;
}
p {
  margin: 0 0 9px;
}
.lead {
  margin-bottom: 18px;
  font-size: 14px;
  font-weight: 300;
  line-height: 1.4;
}
@media (min-width: 768px) {
  .lead {
    font-size: 19.5px;
  }
}
small,
.small {
  font-size: 92%;
}
mark,
.mark {
  background-color: #fcf8e3;
  padding: .2em;
}
.text-left {
  text-align: left;
}
.text-right {
  text-align: right;
}
.text-center {
  text-align: center;
}
.text-justify {
  text-align: justify;
}
.text-nowrap {
  white-space: nowrap;
}
.text-lowercase {
  text-transform: lowercase;
}
.text-uppercase {
  text-transform: uppercase;
}
.text-capitalize {
  text-transform: capitalize;
}
.text-muted {
  color: #777777;
}
.text-primary {
  color: #337ab7;
}
a.text-primary:hover,
a.text-primary:focus {
  color: #286090;
}
.text-success {
  color: #3c763d;
}
a.text-success:hover,
a.text-success:focus {
  color: #2b542c;
}
.text-info {
  color: #31708f;
}
a.text-info:hover,
a.text-info:focus {
  color: #245269;
}
.text-warning {
  color: #8a6d3b;
}
a.text-warning:hover,
a.text-warning:focus {
  color: #66512c;
}
.text-danger {
  color: #a94442;
}
a.text-danger:hover,
a.text-danger:focus {
  color: #843534;
}
.bg-primary {
  color: #fff;
  background-color: #337ab7;
}
a.bg-primary:hover,
a.bg-primary:focus {
  background-color: #286090;
}
.bg-success {
  background-color: #dff0d8;
}
a.bg-success:hover,
a.bg-success:focus {
  background-color: #c1e2b3;
}
.bg-info {
  background-color: #d9edf7;
}
a.bg-info:hover,
a.bg-info:focus {
  background-color: #afd9ee;
}
.bg-warning {
  background-color: #fcf8e3;
}
a.bg-warning:hover,
a.bg-warning:focus {
  background-color: #f7ecb5;
}
.bg-danger {
  background-color: #f2dede;
}
a.bg-danger:hover,
a.bg-danger:focus {
  background-color: #e4b9b9;
}
.page-header {
  padding-bottom: 8px;
  margin: 36px 0 18px;
  border-bottom: 1px solid #eeeeee;
}
ul,
ol {
  margin-top: 0;
  margin-bottom: 9px;
}
ul ul,
ol ul,
ul ol,
ol ol {
  margin-bottom: 0;
}
.list-unstyled {
  padding-left: 0;
  list-style: none;
}
.list-inline {
  padding-left: 0;
  list-style: none;
  margin-left: -5px;
}
.list-inline > li {
  display: inline-block;
  padding-left: 5px;
  padding-right: 5px;
}
dl {
  margin-top: 0;
  margin-bottom: 18px;
}
dt,
dd {
  line-height: 1.42857143;
}
dt {
  font-weight: bold;
}
dd {
  margin-left: 0;
}
@media (min-width: 541px) {
  .dl-horizontal dt {
    float: left;
    width: 160px;
    clear: left;
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .dl-horizontal dd {
    margin-left: 180px;
  }
}
abbr[title],
abbr[data-original-title] {
  cursor: help;
  border-bottom: 1px dotted #777777;
}
.initialism {
  font-size: 90%;
  text-transform: uppercase;
}
blockquote {
  padding: 9px 18px;
  margin: 0 0 18px;
  font-size: inherit;
  border-left: 5px solid #eeeeee;
}
blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
  margin-bottom: 0;
}
blockquote footer,
blockquote small,
blockquote .small {
  display: block;
  font-size: 80%;
  line-height: 1.42857143;
  color: #777777;
}
blockquote footer:before,
blockquote small:before,
blockquote .small:before {
  content: '\2014 \00A0';
}
.blockquote-reverse,
blockquote.pull-right {
  padding-right: 15px;
  padding-left: 0;
  border-right: 5px solid #eeeeee;
  border-left: 0;
  text-align: right;
}
.blockquote-reverse footer:before,
blockquote.pull-right footer:before,
.blockquote-reverse small:before,
blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before {
  content: '';
}
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after {
  content: '\00A0 \2014';
}
address {
  margin-bottom: 18px;
  font-style: normal;
  line-height: 1.42857143;
}
code,
kbd,
pre,
samp {
  font-family: monospace;
}
code {
  padding: 2px 4px;
  font-size: 90%;
  color: #c7254e;
  background-color: #f9f2f4;
  border-radius: 2px;
}
kbd {
  padding: 2px 4px;
  font-size: 90%;
  color: #888;
  background-color: transparent;
  border-radius: 1px;
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);
}
kbd kbd {
  padding: 0;
  font-size: 100%;
  font-weight: bold;
  box-shadow: none;
}
pre {
  display: block;
  padding: 8.5px;
  margin: 0 0 9px;
  font-size: 12px;
  line-height: 1.42857143;
  word-break: break-all;
  word-wrap: break-word;
  color: #333333;
  background-color: #f5f5f5;
  border: 1px solid #ccc;
  border-radius: 2px;
}
pre code {
  padding: 0;
  font-size: inherit;
  color: inherit;
  white-space: pre-wrap;
  background-color: transparent;
  border-radius: 0;
}
.pre-scrollable {
  max-height: 340px;
  overflow-y: scroll;
}
.container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
@media (min-width: 768px) {
  .container {
    width: 768px;
  }
}
@media (min-width: 992px) {
  .container {
    width: 940px;
  }
}
@media (min-width: 1200px) {
  .container {
    width: 1140px;
  }
}
.container-fluid {
  margin-right: auto;
  margin-left: auto;
  padding-left: 0px;
  padding-right: 0px;
}
.row {
  margin-left: 0px;
  margin-right: 0px;
}
.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 0px;
  padding-right: 0px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
  }
  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }
  .col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }
  .col-md-pull-4 {
    right: 33.33333333%;
  }
  .col-md-pull-3 {
    right: 25%;
  }
  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: auto;
  }
  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: auto;
  }
  .col-md-offset-12 {
    margin-left: 100%;
  }
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
  .col-lg-pull-12 {
    right: 100%;
  }
  .col-lg-pull-11 {
    right: 91.66666667%;
  }
  .col-lg-pull-10 {
    right: 83.33333333%;
  }
  .col-lg-pull-9 {
    right: 75%;
  }
  .col-lg-pull-8 {
    right: 66.66666667%;
  }
  .col-lg-pull-7 {
    right: 58.33333333%;
  }
  .col-lg-pull-6 {
    right: 50%;
  }
  .col-lg-pull-5 {
    right: 41.66666667%;
  }
  .col-lg-pull-4 {
    right: 33.33333333%;
  }
  .col-lg-pull-3 {
    right: 25%;
  }
  .col-lg-pull-2 {
    right: 16.66666667%;
  }
  .col-lg-pull-1 {
    right: 8.33333333%;
  }
  .col-lg-pull-0 {
    right: auto;
  }
  .col-lg-push-12 {
    left: 100%;
  }
  .col-lg-push-11 {
    left: 91.66666667%;
  }
  .col-lg-push-10 {
    left: 83.33333333%;
  }
  .col-lg-push-9 {
    left: 75%;
  }
  .col-lg-push-8 {
    left: 66.66666667%;
  }
  .col-lg-push-7 {
    left: 58.33333333%;
  }
  .col-lg-push-6 {
    left: 50%;
  }
  .col-lg-push-5 {
    left: 41.66666667%;
  }
  .col-lg-push-4 {
    left: 33.33333333%;
  }
  .col-lg-push-3 {
    left: 25%;
  }
  .col-lg-push-2 {
    left: 16.66666667%;
  }
  .col-lg-push-1 {
    left: 8.33333333%;
  }
  .col-lg-push-0 {
    left: auto;
  }
  .col-lg-offset-12 {
    margin-left: 100%;
  }
  .col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-lg-offset-9 {
    margin-left: 75%;
  }
  .col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-lg-offset-6 {
    margin-left: 50%;
  }
  .col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-lg-offset-3 {
    margin-left: 25%;
  }
  .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0%;
  }
}
table {
  background-color: transparent;
}
caption {
  padding-top: 8px;
  padding-bottom: 8px;
  color: #777777;
  text-align: left;
}
th {
  text-align: left;
}
.table {
  width: 100%;
  max-width: 100%;
  margin-bottom: 18px;
}
.table > thead > tr > th,
.table > tbody > tr > th,
.table > tfoot > tr > th,
.table > thead > tr > td,
.table > tbody > tr > td,
.table > tfoot > tr > td {
  padding: 8px;
  line-height: 1.42857143;
  vertical-align: top;
  border-top: 1px solid #ddd;
}
.table > thead > tr > th {
  vertical-align: bottom;
  border-bottom: 2px solid #ddd;
}
.table > caption + thead > tr:first-child > th,
.table > colgroup + thead > tr:first-child > th,
.table > thead:first-child > tr:first-child > th,
.table > caption + thead > tr:first-child > td,
.table > colgroup + thead > tr:first-child > td,
.table > thead:first-child > tr:first-child > td {
  border-top: 0;
}
.table > tbody + tbody {
  border-top: 2px solid #ddd;
}
.table .table {
  background-color: #fff;
}
.table-condensed > thead > tr > th,
.table-condensed > tbody > tr > th,
.table-condensed > tfoot > tr > th,
.table-condensed > thead > tr > td,
.table-condensed > tbody > tr > td,
.table-condensed > tfoot > tr > td {
  padding: 5px;
}
.table-bordered {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > tbody > tr > th,
.table-bordered > tfoot > tr > th,
.table-bordered > thead > tr > td,
.table-bordered > tbody > tr > td,
.table-bordered > tfoot > tr > td {
  border: 1px solid #ddd;
}
.table-bordered > thead > tr > th,
.table-bordered > thead > tr > td {
  border-bottom-width: 2px;
}
.table-striped > tbody > tr:nth-of-type(odd) {
  background-color: #f9f9f9;
}
.table-hover > tbody > tr:hover {
  background-color: #f5f5f5;
}
table col[class*="col-"] {
  position: static;
  float: none;
  display: table-column;
}
table td[class*="col-"],
table th[class*="col-"] {
  position: static;
  float: none;
  display: table-cell;
}
.table > thead > tr > td.active,
.table > tbody > tr > td.active,
.table > tfoot > tr > td.active,
.table > thead > tr > th.active,
.table > tbody > tr > th.active,
.table > tfoot > tr > th.active,
.table > thead > tr.active > td,
.table > tbody > tr.active > td,
.table > tfoot > tr.active > td,
.table > thead > tr.active > th,
.table > tbody > tr.active > th,
.table > tfoot > tr.active > th {
  background-color: #f5f5f5;
}
.table-hover > tbody > tr > td.active:hover,
.table-hover > tbody > tr > th.active:hover,
.table-hover > tbody > tr.active:hover > td,
.table-hover > tbody > tr:hover > .active,
.table-hover > tbody > tr.active:hover > th {
  background-color: #e8e8e8;
}
.table > thead > tr > td.success,
.table > tbody > tr > td.success,
.table > tfoot > tr > td.success,
.table > thead > tr > th.success,
.table > tbody > tr > th.success,
.table > tfoot > tr > th.success,
.table > thead > tr.success > td,
.table > tbody > tr.success > td,
.table > tfoot > tr.success > td,
.table > thead > tr.success > th,
.table > tbody > tr.success > th,
.table > tfoot > tr.success > th {
  background-color: #dff0d8;
}
.table-hover > tbody > tr > td.success:hover,
.table-hover > tbody > tr > th.success:hover,
.table-hover > tbody > tr.success:hover > td,
.table-hover > tbody > tr:hover > .success,
.table-hover > tbody > tr.success:hover > th {
  background-color: #d0e9c6;
}
.table > thead > tr > td.info,
.table > tbody > tr > td.info,
.table > tfoot > tr > td.info,
.table > thead > tr > th.info,
.table > tbody > tr > th.info,
.table > tfoot > tr > th.info,
.table > thead > tr.info > td,
.table > tbody > tr.info > td,
.table > tfoot > tr.info > td,
.table > thead > tr.info > th,
.table > tbody > tr.info > th,
.table > tfoot > tr.info > th {
  background-color: #d9edf7;
}
.table-hover > tbody > tr > td.info:hover,
.table-hover > tbody > tr > th.info:hover,
.table-hover > tbody > tr.info:hover > td,
.table-hover > tbody > tr:hover > .info,
.table-hover > tbody > tr.info:hover > th {
  background-color: #c4e3f3;
}
.table > thead > tr > td.warning,
.table > tbody > tr > td.warning,
.table > tfoot > tr > td.warning,
.table > thead > tr > th.warning,
.table > tbody > tr > th.warning,
.table > tfoot > tr > th.warning,
.table > thead > tr.warning > td,
.table > tbody > tr.warning > td,
.table > tfoot > tr.warning > td,
.table > thead > tr.warning > th,
.table > tbody > tr.warning > th,
.table > tfoot > tr.warning > th {
  background-color: #fcf8e3;
}
.table-hover > tbody > tr > td.warning:hover,
.table-hover > tbody > tr > th.warning:hover,
.table-hover > tbody > tr.warning:hover > td,
.table-hover > tbody > tr:hover > .warning,
.table-hover > tbody > tr.warning:hover > th {
  background-color: #faf2cc;
}
.table > thead > tr > td.danger,
.table > tbody > tr > td.danger,
.table > tfoot > tr > td.danger,
.table > thead > tr > th.danger,
.table > tbody > tr > th.danger,
.table > tfoot > tr > th.danger,
.table > thead > tr.danger > td,
.table > tbody > tr.danger > td,
.table > tfoot > tr.danger > td,
.table > thead > tr.danger > th,
.table > tbody > tr.danger > th,
.table > tfoot > tr.danger > th {
  background-color: #f2dede;
}
.table-hover > tbody > tr > td.danger:hover,
.table-hover > tbody > tr > th.danger:hover,
.table-hover > tbody > tr.danger:hover > td,
.table-hover > tbody > tr:hover > .danger,
.table-hover > tbody > tr.danger:hover > th {
  background-color: #ebcccc;
}
.table-responsive {
  overflow-x: auto;
  min-height: 0.01%;
}
@media screen and (max-width: 767px) {
  .table-responsive {
    width: 100%;
    margin-bottom: 13.5px;
    overflow-y: hidden;
    -ms-overflow-style: -ms-autohiding-scrollbar;
    border: 1px solid #ddd;
  }
  .table-responsive > .table {
    margin-bottom: 0;
  }
  .table-responsive > .table > thead > tr > th,
  .table-responsive > .table > tbody > tr > th,
  .table-responsive > .table > tfoot > tr > th,
  .table-responsive > .table > thead > tr > td,
  .table-responsive > .table > tbody > tr > td,
  .table-responsive > .table > tfoot > tr > td {
    white-space: nowrap;
  }
  .table-responsive > .table-bordered {
    border: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:first-child,
  .table-responsive > .table-bordered > tbody > tr > th:first-child,
  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
  .table-responsive > .table-bordered > thead > tr > td:first-child,
  .table-responsive > .table-bordered > tbody > tr > td:first-child,
  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
    border-left: 0;
  }
  .table-responsive > .table-bordered > thead > tr > th:last-child,
  .table-responsive > .table-bordered > tbody > tr > th:last-child,
  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
  .table-responsive > .table-bordered > thead > tr > td:last-child,
  .table-responsive > .table-bordered > tbody > tr > td:last-child,
  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
    border-right: 0;
  }
  .table-responsive > .table-bordered > tbody > tr:last-child > th,
  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
  .table-responsive > .table-bordered > tbody > tr:last-child > td,
  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
    border-bottom: 0;
  }
}
fieldset {
  padding: 0;
  margin: 0;
  border: 0;
  min-width: 0;
}
legend {
  display: block;
  width: 100%;
  padding: 0;
  margin-bottom: 18px;
  font-size: 19.5px;
  line-height: inherit;
  color: #333333;
  border: 0;
  border-bottom: 1px solid #e5e5e5;
}
label {
  display: inline-block;
  max-width: 100%;
  margin-bottom: 5px;
  font-weight: bold;
}
input[type="search"] {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
input[type="radio"],
input[type="checkbox"] {
  margin: 4px 0 0;
  margin-top: 1px \9;
  line-height: normal;
}
input[type="file"] {
  display: block;
}
input[type="range"] {
  display: block;
  width: 100%;
}
select[multiple],
select[size] {
  height: auto;
}
input[type="file"]:focus,
input[type="radio"]:focus,
input[type="checkbox"]:focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
output {
  display: block;
  padding-top: 7px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
}
.form-control {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}
.form-control:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.form-control::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.form-control:-ms-input-placeholder {
  color: #999;
}
.form-control::-webkit-input-placeholder {
  color: #999;
}
.form-control::-ms-expand {
  border: 0;
  background-color: transparent;
}
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
  background-color: #eeeeee;
  opacity: 1;
}
.form-control[disabled],
fieldset[disabled] .form-control {
  cursor: not-allowed;
}
textarea.form-control {
  height: auto;
}
input[type="search"] {
  -webkit-appearance: none;
}
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  input[type="date"].form-control,
  input[type="time"].form-control,
  input[type="datetime-local"].form-control,
  input[type="month"].form-control {
    line-height: 32px;
  }
  input[type="date"].input-sm,
  input[type="time"].input-sm,
  input[type="datetime-local"].input-sm,
  input[type="month"].input-sm,
  .input-group-sm input[type="date"],
  .input-group-sm input[type="time"],
  .input-group-sm input[type="datetime-local"],
  .input-group-sm input[type="month"] {
    line-height: 30px;
  }
  input[type="date"].input-lg,
  input[type="time"].input-lg,
  input[type="datetime-local"].input-lg,
  input[type="month"].input-lg,
  .input-group-lg input[type="date"],
  .input-group-lg input[type="time"],
  .input-group-lg input[type="datetime-local"],
  .input-group-lg input[type="month"] {
    line-height: 45px;
  }
}
.form-group {
  margin-bottom: 15px;
}
.radio,
.checkbox {
  position: relative;
  display: block;
  margin-top: 10px;
  margin-bottom: 10px;
}
.radio label,
.checkbox label {
  min-height: 18px;
  padding-left: 20px;
  margin-bottom: 0;
  font-weight: normal;
  cursor: pointer;
}
.radio input[type="radio"],
.radio-inline input[type="radio"],
.checkbox input[type="checkbox"],
.checkbox-inline input[type="checkbox"] {
  position: absolute;
  margin-left: -20px;
  margin-top: 4px \9;
}
.radio + .radio,
.checkbox + .checkbox {
  margin-top: -5px;
}
.radio-inline,
.checkbox-inline {
  position: relative;
  display: inline-block;
  padding-left: 20px;
  margin-bottom: 0;
  vertical-align: middle;
  font-weight: normal;
  cursor: pointer;
}
.radio-inline + .radio-inline,
.checkbox-inline + .checkbox-inline {
  margin-top: 0;
  margin-left: 10px;
}
input[type="radio"][disabled],
input[type="checkbox"][disabled],
input[type="radio"].disabled,
input[type="checkbox"].disabled,
fieldset[disabled] input[type="radio"],
fieldset[disabled] input[type="checkbox"] {
  cursor: not-allowed;
}
.radio-inline.disabled,
.checkbox-inline.disabled,
fieldset[disabled] .radio-inline,
fieldset[disabled] .checkbox-inline {
  cursor: not-allowed;
}
.radio.disabled label,
.checkbox.disabled label,
fieldset[disabled] .radio label,
fieldset[disabled] .checkbox label {
  cursor: not-allowed;
}
.form-control-static {
  padding-top: 7px;
  padding-bottom: 7px;
  margin-bottom: 0;
  min-height: 31px;
}
.form-control-static.input-lg,
.form-control-static.input-sm {
  padding-left: 0;
  padding-right: 0;
}
.input-sm {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-sm {
  height: 30px;
  line-height: 30px;
}
textarea.input-sm,
select[multiple].input-sm {
  height: auto;
}
.form-group-sm .form-control {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.form-group-sm select.form-control {
  height: 30px;
  line-height: 30px;
}
.form-group-sm textarea.form-control,
.form-group-sm select[multiple].form-control {
  height: auto;
}
.form-group-sm .form-control-static {
  height: 30px;
  min-height: 30px;
  padding: 6px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.input-lg {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-lg {
  height: 45px;
  line-height: 45px;
}
textarea.input-lg,
select[multiple].input-lg {
  height: auto;
}
.form-group-lg .form-control {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.form-group-lg select.form-control {
  height: 45px;
  line-height: 45px;
}
.form-group-lg textarea.form-control,
.form-group-lg select[multiple].form-control {
  height: auto;
}
.form-group-lg .form-control-static {
  height: 45px;
  min-height: 35px;
  padding: 11px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.has-feedback {
  position: relative;
}
.has-feedback .form-control {
  padding-right: 40px;
}
.form-control-feedback {
  position: absolute;
  top: 0;
  right: 0;
  z-index: 2;
  display: block;
  width: 32px;
  height: 32px;
  line-height: 32px;
  text-align: center;
  pointer-events: none;
}
.input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
  width: 45px;
  height: 45px;
  line-height: 45px;
}
.input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
  width: 30px;
  height: 30px;
  line-height: 30px;
}
.has-success .help-block,
.has-success .control-label,
.has-success .radio,
.has-success .checkbox,
.has-success .radio-inline,
.has-success .checkbox-inline,
.has-success.radio label,
.has-success.checkbox label,
.has-success.radio-inline label,
.has-success.checkbox-inline label {
  color: #3c763d;
}
.has-success .form-control {
  border-color: #3c763d;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-success .form-control:focus {
  border-color: #2b542c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
}
.has-success .input-group-addon {
  color: #3c763d;
  border-color: #3c763d;
  background-color: #dff0d8;
}
.has-success .form-control-feedback {
  color: #3c763d;
}
.has-warning .help-block,
.has-warning .control-label,
.has-warning .radio,
.has-warning .checkbox,
.has-warning .radio-inline,
.has-warning .checkbox-inline,
.has-warning.radio label,
.has-warning.checkbox label,
.has-warning.radio-inline label,
.has-warning.checkbox-inline label {
  color: #8a6d3b;
}
.has-warning .form-control {
  border-color: #8a6d3b;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-warning .form-control:focus {
  border-color: #66512c;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
}
.has-warning .input-group-addon {
  color: #8a6d3b;
  border-color: #8a6d3b;
  background-color: #fcf8e3;
}
.has-warning .form-control-feedback {
  color: #8a6d3b;
}
.has-error .help-block,
.has-error .control-label,
.has-error .radio,
.has-error .checkbox,
.has-error .radio-inline,
.has-error .checkbox-inline,
.has-error.radio label,
.has-error.checkbox label,
.has-error.radio-inline label,
.has-error.checkbox-inline label {
  color: #a94442;
}
.has-error .form-control {
  border-color: #a94442;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
}
.has-error .form-control:focus {
  border-color: #843534;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
}
.has-error .input-group-addon {
  color: #a94442;
  border-color: #a94442;
  background-color: #f2dede;
}
.has-error .form-control-feedback {
  color: #a94442;
}
.has-feedback label ~ .form-control-feedback {
  top: 23px;
}
.has-feedback label.sr-only ~ .form-control-feedback {
  top: 0;
}
.help-block {
  display: block;
  margin-top: 5px;
  margin-bottom: 10px;
  color: #404040;
}
@media (min-width: 768px) {
  .form-inline .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .form-inline .form-control-static {
    display: inline-block;
  }
  .form-inline .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .form-inline .input-group .input-group-addon,
  .form-inline .input-group .input-group-btn,
  .form-inline .input-group .form-control {
    width: auto;
  }
  .form-inline .input-group > .form-control {
    width: 100%;
  }
  .form-inline .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio,
  .form-inline .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .form-inline .radio label,
  .form-inline .checkbox label {
    padding-left: 0;
  }
  .form-inline .radio input[type="radio"],
  .form-inline .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .form-inline .has-feedback .form-control-feedback {
    top: 0;
  }
}
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
  margin-top: 0;
  margin-bottom: 0;
  padding-top: 7px;
}
.form-horizontal .radio,
.form-horizontal .checkbox {
  min-height: 25px;
}
.form-horizontal .form-group {
  margin-left: 0px;
  margin-right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .control-label {
    text-align: right;
    margin-bottom: 0;
    padding-top: 7px;
  }
}
.form-horizontal .has-feedback .form-control-feedback {
  right: 0px;
}
@media (min-width: 768px) {
  .form-horizontal .form-group-lg .control-label {
    padding-top: 11px;
    font-size: 17px;
  }
}
@media (min-width: 768px) {
  .form-horizontal .form-group-sm .control-label {
    padding-top: 6px;
    font-size: 12px;
  }
}
.btn {
  display: inline-block;
  margin-bottom: 0;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  touch-action: manipulation;
  cursor: pointer;
  background-image: none;
  border: 1px solid transparent;
  white-space: nowrap;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  border-radius: 2px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.btn:focus,
.btn:active:focus,
.btn.active:focus,
.btn.focus,
.btn:active.focus,
.btn.active.focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.btn:hover,
.btn:focus,
.btn.focus {
  color: #333;
  text-decoration: none;
}
.btn:active,
.btn.active {
  outline: 0;
  background-image: none;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn.disabled,
.btn[disabled],
fieldset[disabled] .btn {
  cursor: not-allowed;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}
a.btn.disabled,
fieldset[disabled] a.btn {
  pointer-events: none;
}
.btn-default {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.btn-default:focus,
.btn-default.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.btn-default:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.btn-default:active:hover,
.btn-default.active:hover,
.open > .dropdown-toggle.btn-default:hover,
.btn-default:active:focus,
.btn-default.active:focus,
.open > .dropdown-toggle.btn-default:focus,
.btn-default:active.focus,
.btn-default.active.focus,
.open > .dropdown-toggle.btn-default.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.btn-default:active,
.btn-default.active,
.open > .dropdown-toggle.btn-default {
  background-image: none;
}
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus {
  background-color: #fff;
  border-color: #ccc;
}
.btn-default .badge {
  color: #fff;
  background-color: #333;
}
.btn-primary {
  color: #fff;
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary:focus,
.btn-primary.focus {
  color: #fff;
  background-color: #286090;
  border-color: #122b40;
}
.btn-primary:hover {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  color: #fff;
  background-color: #286090;
  border-color: #204d74;
}
.btn-primary:active:hover,
.btn-primary.active:hover,
.open > .dropdown-toggle.btn-primary:hover,
.btn-primary:active:focus,
.btn-primary.active:focus,
.open > .dropdown-toggle.btn-primary:focus,
.btn-primary:active.focus,
.btn-primary.active.focus,
.open > .dropdown-toggle.btn-primary.focus {
  color: #fff;
  background-color: #204d74;
  border-color: #122b40;
}
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
  background-image: none;
}
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus {
  background-color: #337ab7;
  border-color: #2e6da4;
}
.btn-primary .badge {
  color: #337ab7;
  background-color: #fff;
}
.btn-success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success:focus,
.btn-success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.btn-success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.btn-success:active:hover,
.btn-success.active:hover,
.open > .dropdown-toggle.btn-success:hover,
.btn-success:active:focus,
.btn-success.active:focus,
.open > .dropdown-toggle.btn-success:focus,
.btn-success:active.focus,
.btn-success.active.focus,
.open > .dropdown-toggle.btn-success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.btn-success:active,
.btn-success.active,
.open > .dropdown-toggle.btn-success {
  background-image: none;
}
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.btn-success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.btn-info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info:focus,
.btn-info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.btn-info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.btn-info:active:hover,
.btn-info.active:hover,
.open > .dropdown-toggle.btn-info:hover,
.btn-info:active:focus,
.btn-info.active:focus,
.open > .dropdown-toggle.btn-info:focus,
.btn-info:active.focus,
.btn-info.active.focus,
.open > .dropdown-toggle.btn-info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.btn-info:active,
.btn-info.active,
.open > .dropdown-toggle.btn-info {
  background-image: none;
}
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.btn-info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.btn-warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning:focus,
.btn-warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.btn-warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.btn-warning:active:hover,
.btn-warning.active:hover,
.open > .dropdown-toggle.btn-warning:hover,
.btn-warning:active:focus,
.btn-warning.active:focus,
.open > .dropdown-toggle.btn-warning:focus,
.btn-warning:active.focus,
.btn-warning.active.focus,
.open > .dropdown-toggle.btn-warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.btn-warning:active,
.btn-warning.active,
.open > .dropdown-toggle.btn-warning {
  background-image: none;
}
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.btn-warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.btn-danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger:focus,
.btn-danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.btn-danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.btn-danger:active:hover,
.btn-danger.active:hover,
.open > .dropdown-toggle.btn-danger:hover,
.btn-danger:active:focus,
.btn-danger.active:focus,
.open > .dropdown-toggle.btn-danger:focus,
.btn-danger:active.focus,
.btn-danger.active.focus,
.open > .dropdown-toggle.btn-danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.btn-danger:active,
.btn-danger.active,
.open > .dropdown-toggle.btn-danger {
  background-image: none;
}
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.btn-danger .badge {
  color: #d9534f;
  background-color: #fff;
}
.btn-link {
  color: #337ab7;
  font-weight: normal;
  border-radius: 0;
}
.btn-link,
.btn-link:active,
.btn-link.active,
.btn-link[disabled],
fieldset[disabled] .btn-link {
  background-color: transparent;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn-link,
.btn-link:hover,
.btn-link:focus,
.btn-link:active {
  border-color: transparent;
}
.btn-link:hover,
.btn-link:focus {
  color: #23527c;
  text-decoration: underline;
  background-color: transparent;
}
.btn-link[disabled]:hover,
fieldset[disabled] .btn-link:hover,
.btn-link[disabled]:focus,
fieldset[disabled] .btn-link:focus {
  color: #777777;
  text-decoration: none;
}
.btn-lg,
.btn-group-lg > .btn {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
.btn-sm,
.btn-group-sm > .btn {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-xs,
.btn-group-xs > .btn {
  padding: 1px 5px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
.btn-block {
  display: block;
  width: 100%;
}
.btn-block + .btn-block {
  margin-top: 5px;
}
input[type="submit"].btn-block,
input[type="reset"].btn-block,
input[type="button"].btn-block {
  width: 100%;
}
.fade {
  opacity: 0;
  -webkit-transition: opacity 0.15s linear;
  -o-transition: opacity 0.15s linear;
  transition: opacity 0.15s linear;
}
.fade.in {
  opacity: 1;
}
.collapse {
  display: none;
}
.collapse.in {
  display: block;
}
tr.collapse.in {
  display: table-row;
}
tbody.collapse.in {
  display: table-row-group;
}
.collapsing {
  position: relative;
  height: 0;
  overflow: hidden;
  -webkit-transition-property: height, visibility;
  transition-property: height, visibility;
  -webkit-transition-duration: 0.35s;
  transition-duration: 0.35s;
  -webkit-transition-timing-function: ease;
  transition-timing-function: ease;
}
.caret {
  display: inline-block;
  width: 0;
  height: 0;
  margin-left: 2px;
  vertical-align: middle;
  border-top: 4px dashed;
  border-top: 4px solid \9;
  border-right: 4px solid transparent;
  border-left: 4px solid transparent;
}
.dropup,
.dropdown {
  position: relative;
}
.dropdown-toggle:focus {
  outline: 0;
}
.dropdown-menu {
  position: absolute;
  top: 100%;
  left: 0;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 13px;
  text-align: left;
  background-color: #fff;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 2px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  background-clip: padding-box;
}
.dropdown-menu.pull-right {
  right: 0;
  left: auto;
}
.dropdown-menu .divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.dropdown-menu > li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 1.42857143;
  color: #333333;
  white-space: nowrap;
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  text-decoration: none;
  color: #262626;
  background-color: #f5f5f5;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  background-color: #337ab7;
}
.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #777777;
}
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
  cursor: not-allowed;
}
.open > .dropdown-menu {
  display: block;
}
.open > a {
  outline: 0;
}
.dropdown-menu-right {
  left: auto;
  right: 0;
}
.dropdown-menu-left {
  left: 0;
  right: auto;
}
.dropdown-header {
  display: block;
  padding: 3px 20px;
  font-size: 12px;
  line-height: 1.42857143;
  color: #777777;
  white-space: nowrap;
}
.dropdown-backdrop {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  z-index: 990;
}
.pull-right > .dropdown-menu {
  right: 0;
  left: auto;
}
.dropup .caret,
.navbar-fixed-bottom .dropdown .caret {
  border-top: 0;
  border-bottom: 4px dashed;
  border-bottom: 4px solid \9;
  content: "";
}
.dropup .dropdown-menu,
.navbar-fixed-bottom .dropdown .dropdown-menu {
  top: auto;
  bottom: 100%;
  margin-bottom: 2px;
}
@media (min-width: 541px) {
  .navbar-right .dropdown-menu {
    left: auto;
    right: 0;
  }
  .navbar-right .dropdown-menu-left {
    left: 0;
    right: auto;
  }
}
.btn-group,
.btn-group-vertical {
  position: relative;
  display: inline-block;
  vertical-align: middle;
}
.btn-group > .btn,
.btn-group-vertical > .btn {
  position: relative;
  float: left;
}
.btn-group > .btn:hover,
.btn-group-vertical > .btn:hover,
.btn-group > .btn:focus,
.btn-group-vertical > .btn:focus,
.btn-group > .btn:active,
.btn-group-vertical > .btn:active,
.btn-group > .btn.active,
.btn-group-vertical > .btn.active {
  z-index: 2;
}
.btn-group .btn + .btn,
.btn-group .btn + .btn-group,
.btn-group .btn-group + .btn,
.btn-group .btn-group + .btn-group {
  margin-left: -1px;
}
.btn-toolbar {
  margin-left: -5px;
}
.btn-toolbar .btn,
.btn-toolbar .btn-group,
.btn-toolbar .input-group {
  float: left;
}
.btn-toolbar > .btn,
.btn-toolbar > .btn-group,
.btn-toolbar > .input-group {
  margin-left: 5px;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
  border-radius: 0;
}
.btn-group > .btn:first-child {
  margin-left: 0;
}
.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn:last-child:not(:first-child),
.btn-group > .dropdown-toggle:not(:first-child) {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group > .btn-group {
  float: left;
}
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.btn-group .dropdown-toggle:active,
.btn-group.open .dropdown-toggle {
  outline: 0;
}
.btn-group > .btn + .dropdown-toggle {
  padding-left: 8px;
  padding-right: 8px;
}
.btn-group > .btn-lg + .dropdown-toggle {
  padding-left: 12px;
  padding-right: 12px;
}
.btn-group.open .dropdown-toggle {
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.btn-group.open .dropdown-toggle.btn-link {
  -webkit-box-shadow: none;
  box-shadow: none;
}
.btn .caret {
  margin-left: 0;
}
.btn-lg .caret {
  border-width: 5px 5px 0;
  border-bottom-width: 0;
}
.dropup .btn-lg .caret {
  border-width: 0 5px 5px;
}
.btn-group-vertical > .btn,
.btn-group-vertical > .btn-group,
.btn-group-vertical > .btn-group > .btn {
  display: block;
  float: none;
  width: 100%;
  max-width: 100%;
}
.btn-group-vertical > .btn-group > .btn {
  float: none;
}
.btn-group-vertical > .btn + .btn,
.btn-group-vertical > .btn + .btn-group,
.btn-group-vertical > .btn-group + .btn,
.btn-group-vertical > .btn-group + .btn-group {
  margin-top: -1px;
  margin-left: 0;
}
.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.btn-group-vertical > .btn:first-child:not(:last-child) {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn:last-child:not(:first-child) {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
  border-radius: 0;
}
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.btn-group-justified {
  display: table;
  width: 100%;
  table-layout: fixed;
  border-collapse: separate;
}
.btn-group-justified > .btn,
.btn-group-justified > .btn-group {
  float: none;
  display: table-cell;
  width: 1%;
}
.btn-group-justified > .btn-group .btn {
  width: 100%;
}
.btn-group-justified > .btn-group .dropdown-menu {
  left: auto;
}
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
  position: absolute;
  clip: rect(0, 0, 0, 0);
  pointer-events: none;
}
.input-group {
  position: relative;
  display: table;
  border-collapse: separate;
}
.input-group[class*="col-"] {
  float: none;
  padding-left: 0;
  padding-right: 0;
}
.input-group .form-control {
  position: relative;
  z-index: 2;
  float: left;
  width: 100%;
  margin-bottom: 0;
}
.input-group .form-control:focus {
  z-index: 3;
}
.input-group-lg > .form-control,
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
  border-radius: 3px;
}
select.input-group-lg > .form-control,
select.input-group-lg > .input-group-addon,
select.input-group-lg > .input-group-btn > .btn {
  height: 45px;
  line-height: 45px;
}
textarea.input-group-lg > .form-control,
textarea.input-group-lg > .input-group-addon,
textarea.input-group-lg > .input-group-btn > .btn,
select[multiple].input-group-lg > .form-control,
select[multiple].input-group-lg > .input-group-addon,
select[multiple].input-group-lg > .input-group-btn > .btn {
  height: auto;
}
.input-group-sm > .form-control,
.input-group-sm > .input-group-addon,
.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
}
select.input-group-sm > .form-control,
select.input-group-sm > .input-group-addon,
select.input-group-sm > .input-group-btn > .btn {
  height: 30px;
  line-height: 30px;
}
textarea.input-group-sm > .form-control,
textarea.input-group-sm > .input-group-addon,
textarea.input-group-sm > .input-group-btn > .btn,
select[multiple].input-group-sm > .form-control,
select[multiple].input-group-sm > .input-group-addon,
select[multiple].input-group-sm > .input-group-btn > .btn {
  height: auto;
}
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;
}
.input-group-addon:not(:first-child):not(:last-child),
.input-group-btn:not(:first-child):not(:last-child),
.input-group .form-control:not(:first-child):not(:last-child) {
  border-radius: 0;
}
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle;
}
.input-group-addon {
  padding: 6px 12px;
  font-size: 13px;
  font-weight: normal;
  line-height: 1;
  color: #555555;
  text-align: center;
  background-color: #eeeeee;
  border: 1px solid #ccc;
  border-radius: 2px;
}
.input-group-addon.input-sm {
  padding: 5px 10px;
  font-size: 12px;
  border-radius: 1px;
}
.input-group-addon.input-lg {
  padding: 10px 16px;
  font-size: 17px;
  border-radius: 3px;
}
.input-group-addon input[type="radio"],
.input-group-addon input[type="checkbox"] {
  margin-top: 0;
}
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
  border-bottom-right-radius: 0;
  border-top-right-radius: 0;
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child),
.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
  border-bottom-left-radius: 0;
  border-top-left-radius: 0;
}
.input-group-addon:last-child {
  border-left: 0;
}
.input-group-btn {
  position: relative;
  font-size: 0;
  white-space: nowrap;
}
.input-group-btn > .btn {
  position: relative;
}
.input-group-btn > .btn + .btn {
  margin-left: -1px;
}
.input-group-btn > .btn:hover,
.input-group-btn > .btn:focus,
.input-group-btn > .btn:active {
  z-index: 2;
}
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .btn-group {
  margin-right: -1px;
}
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .btn-group {
  z-index: 2;
  margin-left: -1px;
}
.nav {
  margin-bottom: 0;
  padding-left: 0;
  list-style: none;
}
.nav > li {
  position: relative;
  display: block;
}
.nav > li > a {
  position: relative;
  display: block;
  padding: 10px 15px;
}
.nav > li > a:hover,
.nav > li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.nav > li.disabled > a {
  color: #777777;
}
.nav > li.disabled > a:hover,
.nav > li.disabled > a:focus {
  color: #777777;
  text-decoration: none;
  background-color: transparent;
  cursor: not-allowed;
}
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
  background-color: #eeeeee;
  border-color: #337ab7;
}
.nav .nav-divider {
  height: 1px;
  margin: 8px 0;
  overflow: hidden;
  background-color: #e5e5e5;
}
.nav > li > a > img {
  max-width: none;
}
.nav-tabs {
  border-bottom: 1px solid #ddd;
}
.nav-tabs > li {
  float: left;
  margin-bottom: -1px;
}
.nav-tabs > li > a {
  margin-right: 2px;
  line-height: 1.42857143;
  border: 1px solid transparent;
  border-radius: 2px 2px 0 0;
}
.nav-tabs > li > a:hover {
  border-color: #eeeeee #eeeeee #ddd;
}
.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
  color: #555555;
  background-color: #fff;
  border: 1px solid #ddd;
  border-bottom-color: transparent;
  cursor: default;
}
.nav-tabs.nav-justified {
  width: 100%;
  border-bottom: 0;
}
.nav-tabs.nav-justified > li {
  float: none;
}
.nav-tabs.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-tabs.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-tabs.nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs.nav-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs.nav-justified > .active > a,
.nav-tabs.nav-justified > .active > a:hover,
.nav-tabs.nav-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs.nav-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs.nav-justified > .active > a,
  .nav-tabs.nav-justified > .active > a:hover,
  .nav-tabs.nav-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.nav-pills > li {
  float: left;
}
.nav-pills > li > a {
  border-radius: 2px;
}
.nav-pills > li + li {
  margin-left: 2px;
}
.nav-pills > li.active > a,
.nav-pills > li.active > a:hover,
.nav-pills > li.active > a:focus {
  color: #fff;
  background-color: #337ab7;
}
.nav-stacked > li {
  float: none;
}
.nav-stacked > li + li {
  margin-top: 2px;
  margin-left: 0;
}
.nav-justified {
  width: 100%;
}
.nav-justified > li {
  float: none;
}
.nav-justified > li > a {
  text-align: center;
  margin-bottom: 5px;
}
.nav-justified > .dropdown .dropdown-menu {
  top: auto;
  left: auto;
}
@media (min-width: 768px) {
  .nav-justified > li {
    display: table-cell;
    width: 1%;
  }
  .nav-justified > li > a {
    margin-bottom: 0;
  }
}
.nav-tabs-justified {
  border-bottom: 0;
}
.nav-tabs-justified > li > a {
  margin-right: 0;
  border-radius: 2px;
}
.nav-tabs-justified > .active > a,
.nav-tabs-justified > .active > a:hover,
.nav-tabs-justified > .active > a:focus {
  border: 1px solid #ddd;
}
@media (min-width: 768px) {
  .nav-tabs-justified > li > a {
    border-bottom: 1px solid #ddd;
    border-radius: 2px 2px 0 0;
  }
  .nav-tabs-justified > .active > a,
  .nav-tabs-justified > .active > a:hover,
  .nav-tabs-justified > .active > a:focus {
    border-bottom-color: #fff;
  }
}
.tab-content > .tab-pane {
  display: none;
}
.tab-content > .active {
  display: block;
}
.nav-tabs .dropdown-menu {
  margin-top: -1px;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar {
  position: relative;
  min-height: 30px;
  margin-bottom: 18px;
  border: 1px solid transparent;
}
@media (min-width: 541px) {
  .navbar {
    border-radius: 2px;
  }
}
@media (min-width: 541px) {
  .navbar-header {
    float: left;
  }
}
.navbar-collapse {
  overflow-x: visible;
  padding-right: 0px;
  padding-left: 0px;
  border-top: 1px solid transparent;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  -webkit-overflow-scrolling: touch;
}
.navbar-collapse.in {
  overflow-y: auto;
}
@media (min-width: 541px) {
  .navbar-collapse {
    width: auto;
    border-top: 0;
    box-shadow: none;
  }
  .navbar-collapse.collapse {
    display: block !important;
    height: auto !important;
    padding-bottom: 0;
    overflow: visible !important;
  }
  .navbar-collapse.in {
    overflow-y: visible;
  }
  .navbar-fixed-top .navbar-collapse,
  .navbar-static-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    padding-left: 0;
    padding-right: 0;
  }
}
.navbar-fixed-top .navbar-collapse,
.navbar-fixed-bottom .navbar-collapse {
  max-height: 340px;
}
@media (max-device-width: 540px) and (orientation: landscape) {
  .navbar-fixed-top .navbar-collapse,
  .navbar-fixed-bottom .navbar-collapse {
    max-height: 200px;
  }
}
.container > .navbar-header,
.container-fluid > .navbar-header,
.container > .navbar-collapse,
.container-fluid > .navbar-collapse {
  margin-right: 0px;
  margin-left: 0px;
}
@media (min-width: 541px) {
  .container > .navbar-header,
  .container-fluid > .navbar-header,
  .container > .navbar-collapse,
  .container-fluid > .navbar-collapse {
    margin-right: 0;
    margin-left: 0;
  }
}
.navbar-static-top {
  z-index: 1000;
  border-width: 0 0 1px;
}
@media (min-width: 541px) {
  .navbar-static-top {
    border-radius: 0;
  }
}
.navbar-fixed-top,
.navbar-fixed-bottom {
  position: fixed;
  right: 0;
  left: 0;
  z-index: 1030;
}
@media (min-width: 541px) {
  .navbar-fixed-top,
  .navbar-fixed-bottom {
    border-radius: 0;
  }
}
.navbar-fixed-top {
  top: 0;
  border-width: 0 0 1px;
}
.navbar-fixed-bottom {
  bottom: 0;
  margin-bottom: 0;
  border-width: 1px 0 0;
}
.navbar-brand {
  float: left;
  padding: 6px 0px;
  font-size: 17px;
  line-height: 18px;
  height: 30px;
}
.navbar-brand:hover,
.navbar-brand:focus {
  text-decoration: none;
}
.navbar-brand > img {
  display: block;
}
@media (min-width: 541px) {
  .navbar > .container .navbar-brand,
  .navbar > .container-fluid .navbar-brand {
    margin-left: 0px;
  }
}
.navbar-toggle {
  position: relative;
  float: right;
  margin-right: 0px;
  padding: 9px 10px;
  margin-top: -2px;
  margin-bottom: -2px;
  background-color: transparent;
  background-image: none;
  border: 1px solid transparent;
  border-radius: 2px;
}
.navbar-toggle:focus {
  outline: 0;
}
.navbar-toggle .icon-bar {
  display: block;
  width: 22px;
  height: 2px;
  border-radius: 1px;
}
.navbar-toggle .icon-bar + .icon-bar {
  margin-top: 4px;
}
@media (min-width: 541px) {
  .navbar-toggle {
    display: none;
  }
}
.navbar-nav {
  margin: 3px 0px;
}
.navbar-nav > li > a {
  padding-top: 10px;
  padding-bottom: 10px;
  line-height: 18px;
}
@media (max-width: 540px) {
  .navbar-nav .open .dropdown-menu {
    position: static;
    float: none;
    width: auto;
    margin-top: 0;
    background-color: transparent;
    border: 0;
    box-shadow: none;
  }
  .navbar-nav .open .dropdown-menu > li > a,
  .navbar-nav .open .dropdown-menu .dropdown-header {
    padding: 5px 15px 5px 25px;
  }
  .navbar-nav .open .dropdown-menu > li > a {
    line-height: 18px;
  }
  .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-nav .open .dropdown-menu > li > a:focus {
    background-image: none;
  }
}
@media (min-width: 541px) {
  .navbar-nav {
    float: left;
    margin: 0;
  }
  .navbar-nav > li {
    float: left;
  }
  .navbar-nav > li > a {
    padding-top: 6px;
    padding-bottom: 6px;
  }
}
.navbar-form {
  margin-left: 0px;
  margin-right: 0px;
  padding: 10px 0px;
  border-top: 1px solid transparent;
  border-bottom: 1px solid transparent;
  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);
  margin-top: -1px;
  margin-bottom: -1px;
}
@media (min-width: 768px) {
  .navbar-form .form-group {
    display: inline-block;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .form-control {
    display: inline-block;
    width: auto;
    vertical-align: middle;
  }
  .navbar-form .form-control-static {
    display: inline-block;
  }
  .navbar-form .input-group {
    display: inline-table;
    vertical-align: middle;
  }
  .navbar-form .input-group .input-group-addon,
  .navbar-form .input-group .input-group-btn,
  .navbar-form .input-group .form-control {
    width: auto;
  }
  .navbar-form .input-group > .form-control {
    width: 100%;
  }
  .navbar-form .control-label {
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio,
  .navbar-form .checkbox {
    display: inline-block;
    margin-top: 0;
    margin-bottom: 0;
    vertical-align: middle;
  }
  .navbar-form .radio label,
  .navbar-form .checkbox label {
    padding-left: 0;
  }
  .navbar-form .radio input[type="radio"],
  .navbar-form .checkbox input[type="checkbox"] {
    position: relative;
    margin-left: 0;
  }
  .navbar-form .has-feedback .form-control-feedback {
    top: 0;
  }
}
@media (max-width: 540px) {
  .navbar-form .form-group {
    margin-bottom: 5px;
  }
  .navbar-form .form-group:last-child {
    margin-bottom: 0;
  }
}
@media (min-width: 541px) {
  .navbar-form {
    width: auto;
    border: 0;
    margin-left: 0;
    margin-right: 0;
    padding-top: 0;
    padding-bottom: 0;
    -webkit-box-shadow: none;
    box-shadow: none;
  }
}
.navbar-nav > li > .dropdown-menu {
  margin-top: 0;
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
  margin-bottom: 0;
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.navbar-btn {
  margin-top: -1px;
  margin-bottom: -1px;
}
.navbar-btn.btn-sm {
  margin-top: 0px;
  margin-bottom: 0px;
}
.navbar-btn.btn-xs {
  margin-top: 4px;
  margin-bottom: 4px;
}
.navbar-text {
  margin-top: 6px;
  margin-bottom: 6px;
}
@media (min-width: 541px) {
  .navbar-text {
    float: left;
    margin-left: 0px;
    margin-right: 0px;
  }
}
@media (min-width: 541px) {
  .navbar-left {
    float: left !important;
    float: left;
  }
  .navbar-right {
    float: right !important;
    float: right;
    margin-right: 0px;
  }
  .navbar-right ~ .navbar-right {
    margin-right: 0;
  }
}
.navbar-default {
  background-color: #f8f8f8;
  border-color: #e7e7e7;
}
.navbar-default .navbar-brand {
  color: #777;
}
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
  color: #5e5e5e;
  background-color: transparent;
}
.navbar-default .navbar-text {
  color: #777;
}
.navbar-default .navbar-nav > li > a {
  color: #777;
}
.navbar-default .navbar-nav > li > a:hover,
.navbar-default .navbar-nav > li > a:focus {
  color: #333;
  background-color: transparent;
}
.navbar-default .navbar-nav > .active > a,
.navbar-default .navbar-nav > .active > a:hover,
.navbar-default .navbar-nav > .active > a:focus {
  color: #555;
  background-color: #e7e7e7;
}
.navbar-default .navbar-nav > .disabled > a,
.navbar-default .navbar-nav > .disabled > a:hover,
.navbar-default .navbar-nav > .disabled > a:focus {
  color: #ccc;
  background-color: transparent;
}
.navbar-default .navbar-toggle {
  border-color: #ddd;
}
.navbar-default .navbar-toggle:hover,
.navbar-default .navbar-toggle:focus {
  background-color: #ddd;
}
.navbar-default .navbar-toggle .icon-bar {
  background-color: #888;
}
.navbar-default .navbar-collapse,
.navbar-default .navbar-form {
  border-color: #e7e7e7;
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus {
  background-color: #e7e7e7;
  color: #555;
}
@media (max-width: 540px) {
  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
    color: #777;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #333;
    background-color: transparent;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #555;
    background-color: #e7e7e7;
  }
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #ccc;
    background-color: transparent;
  }
}
.navbar-default .navbar-link {
  color: #777;
}
.navbar-default .navbar-link:hover {
  color: #333;
}
.navbar-default .btn-link {
  color: #777;
}
.navbar-default .btn-link:hover,
.navbar-default .btn-link:focus {
  color: #333;
}
.navbar-default .btn-link[disabled]:hover,
fieldset[disabled] .navbar-default .btn-link:hover,
.navbar-default .btn-link[disabled]:focus,
fieldset[disabled] .navbar-default .btn-link:focus {
  color: #ccc;
}
.navbar-inverse {
  background-color: #222;
  border-color: #080808;
}
.navbar-inverse .navbar-brand {
  color: #9d9d9d;
}
.navbar-inverse .navbar-brand:hover,
.navbar-inverse .navbar-brand:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-text {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a {
  color: #9d9d9d;
}
.navbar-inverse .navbar-nav > li > a:hover,
.navbar-inverse .navbar-nav > li > a:focus {
  color: #fff;
  background-color: transparent;
}
.navbar-inverse .navbar-nav > .active > a,
.navbar-inverse .navbar-nav > .active > a:hover,
.navbar-inverse .navbar-nav > .active > a:focus {
  color: #fff;
  background-color: #080808;
}
.navbar-inverse .navbar-nav > .disabled > a,
.navbar-inverse .navbar-nav > .disabled > a:hover,
.navbar-inverse .navbar-nav > .disabled > a:focus {
  color: #444;
  background-color: transparent;
}
.navbar-inverse .navbar-toggle {
  border-color: #333;
}
.navbar-inverse .navbar-toggle:hover,
.navbar-inverse .navbar-toggle:focus {
  background-color: #333;
}
.navbar-inverse .navbar-toggle .icon-bar {
  background-color: #fff;
}
.navbar-inverse .navbar-collapse,
.navbar-inverse .navbar-form {
  border-color: #101010;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .open > a:hover,
.navbar-inverse .navbar-nav > .open > a:focus {
  background-color: #080808;
  color: #fff;
}
@media (max-width: 540px) {
  .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
    border-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
    color: #9d9d9d;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
    color: #fff;
    background-color: transparent;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
    color: #fff;
    background-color: #080808;
  }
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
  .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
    color: #444;
    background-color: transparent;
  }
}
.navbar-inverse .navbar-link {
  color: #9d9d9d;
}
.navbar-inverse .navbar-link:hover {
  color: #fff;
}
.navbar-inverse .btn-link {
  color: #9d9d9d;
}
.navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link:focus {
  color: #fff;
}
.navbar-inverse .btn-link[disabled]:hover,
fieldset[disabled] .navbar-inverse .btn-link:hover,
.navbar-inverse .btn-link[disabled]:focus,
fieldset[disabled] .navbar-inverse .btn-link:focus {
  color: #444;
}
.breadcrumb {
  padding: 8px 15px;
  margin-bottom: 18px;
  list-style: none;
  background-color: #f5f5f5;
  border-radius: 2px;
}
.breadcrumb > li {
  display: inline-block;
}
.breadcrumb > li + li:before {
  content: "/\00a0";
  padding: 0 5px;
  color: #5e5e5e;
}
.breadcrumb > .active {
  color: #777777;
}
.pagination {
  display: inline-block;
  padding-left: 0;
  margin: 18px 0;
  border-radius: 2px;
}
.pagination > li {
  display: inline;
}
.pagination > li > a,
.pagination > li > span {
  position: relative;
  float: left;
  padding: 6px 12px;
  line-height: 1.42857143;
  text-decoration: none;
  color: #337ab7;
  background-color: #fff;
  border: 1px solid #ddd;
  margin-left: -1px;
}
.pagination > li:first-child > a,
.pagination > li:first-child > span {
  margin-left: 0;
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.pagination > li:last-child > a,
.pagination > li:last-child > span {
  border-bottom-right-radius: 2px;
  border-top-right-radius: 2px;
}
.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
  z-index: 2;
  color: #23527c;
  background-color: #eeeeee;
  border-color: #ddd;
}
.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
  z-index: 3;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
  cursor: default;
}
.pagination > .disabled > span,
.pagination > .disabled > span:hover,
.pagination > .disabled > span:focus,
.pagination > .disabled > a,
.pagination > .disabled > a:hover,
.pagination > .disabled > a:focus {
  color: #777777;
  background-color: #fff;
  border-color: #ddd;
  cursor: not-allowed;
}
.pagination-lg > li > a,
.pagination-lg > li > span {
  padding: 10px 16px;
  font-size: 17px;
  line-height: 1.3333333;
}
.pagination-lg > li:first-child > a,
.pagination-lg > li:first-child > span {
  border-bottom-left-radius: 3px;
  border-top-left-radius: 3px;
}
.pagination-lg > li:last-child > a,
.pagination-lg > li:last-child > span {
  border-bottom-right-radius: 3px;
  border-top-right-radius: 3px;
}
.pagination-sm > li > a,
.pagination-sm > li > span {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
}
.pagination-sm > li:first-child > a,
.pagination-sm > li:first-child > span {
  border-bottom-left-radius: 1px;
  border-top-left-radius: 1px;
}
.pagination-sm > li:last-child > a,
.pagination-sm > li:last-child > span {
  border-bottom-right-radius: 1px;
  border-top-right-radius: 1px;
}
.pager {
  padding-left: 0;
  margin: 18px 0;
  list-style: none;
  text-align: center;
}
.pager li {
  display: inline;
}
.pager li > a,
.pager li > span {
  display: inline-block;
  padding: 5px 14px;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 15px;
}
.pager li > a:hover,
.pager li > a:focus {
  text-decoration: none;
  background-color: #eeeeee;
}
.pager .next > a,
.pager .next > span {
  float: right;
}
.pager .previous > a,
.pager .previous > span {
  float: left;
}
.pager .disabled > a,
.pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span {
  color: #777777;
  background-color: #fff;
  cursor: not-allowed;
}
.label {
  display: inline;
  padding: .2em .6em .3em;
  font-size: 75%;
  font-weight: bold;
  line-height: 1;
  color: #fff;
  text-align: center;
  white-space: nowrap;
  vertical-align: baseline;
  border-radius: .25em;
}
a.label:hover,
a.label:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.label:empty {
  display: none;
}
.btn .label {
  position: relative;
  top: -1px;
}
.label-default {
  background-color: #777777;
}
.label-default[href]:hover,
.label-default[href]:focus {
  background-color: #5e5e5e;
}
.label-primary {
  background-color: #337ab7;
}
.label-primary[href]:hover,
.label-primary[href]:focus {
  background-color: #286090;
}
.label-success {
  background-color: #5cb85c;
}
.label-success[href]:hover,
.label-success[href]:focus {
  background-color: #449d44;
}
.label-info {
  background-color: #5bc0de;
}
.label-info[href]:hover,
.label-info[href]:focus {
  background-color: #31b0d5;
}
.label-warning {
  background-color: #f0ad4e;
}
.label-warning[href]:hover,
.label-warning[href]:focus {
  background-color: #ec971f;
}
.label-danger {
  background-color: #d9534f;
}
.label-danger[href]:hover,
.label-danger[href]:focus {
  background-color: #c9302c;
}
.badge {
  display: inline-block;
  min-width: 10px;
  padding: 3px 7px;
  font-size: 12px;
  font-weight: bold;
  color: #fff;
  line-height: 1;
  vertical-align: middle;
  white-space: nowrap;
  text-align: center;
  background-color: #777777;
  border-radius: 10px;
}
.badge:empty {
  display: none;
}
.btn .badge {
  position: relative;
  top: -1px;
}
.btn-xs .badge,
.btn-group-xs > .btn .badge {
  top: 0;
  padding: 1px 5px;
}
a.badge:hover,
a.badge:focus {
  color: #fff;
  text-decoration: none;
  cursor: pointer;
}
.list-group-item.active > .badge,
.nav-pills > .active > a > .badge {
  color: #337ab7;
  background-color: #fff;
}
.list-group-item > .badge {
  float: right;
}
.list-group-item > .badge + .badge {
  margin-right: 5px;
}
.nav-pills > li > a > .badge {
  margin-left: 3px;
}
.jumbotron {
  padding-top: 30px;
  padding-bottom: 30px;
  margin-bottom: 30px;
  color: inherit;
  background-color: #eeeeee;
}
.jumbotron h1,
.jumbotron .h1 {
  color: inherit;
}
.jumbotron p {
  margin-bottom: 15px;
  font-size: 20px;
  font-weight: 200;
}
.jumbotron > hr {
  border-top-color: #d5d5d5;
}
.container .jumbotron,
.container-fluid .jumbotron {
  border-radius: 3px;
  padding-left: 0px;
  padding-right: 0px;
}
.jumbotron .container {
  max-width: 100%;
}
@media screen and (min-width: 768px) {
  .jumbotron {
    padding-top: 48px;
    padding-bottom: 48px;
  }
  .container .jumbotron,
  .container-fluid .jumbotron {
    padding-left: 60px;
    padding-right: 60px;
  }
  .jumbotron h1,
  .jumbotron .h1 {
    font-size: 59px;
  }
}
.thumbnail {
  display: block;
  padding: 4px;
  margin-bottom: 18px;
  line-height: 1.42857143;
  background-color: #fff;
  border: 1px solid #ddd;
  border-radius: 2px;
  -webkit-transition: border 0.2s ease-in-out;
  -o-transition: border 0.2s ease-in-out;
  transition: border 0.2s ease-in-out;
}
.thumbnail > img,
.thumbnail a > img {
  margin-left: auto;
  margin-right: auto;
}
a.thumbnail:hover,
a.thumbnail:focus,
a.thumbnail.active {
  border-color: #337ab7;
}
.thumbnail .caption {
  padding: 9px;
  color: #000;
}
.alert {
  padding: 15px;
  margin-bottom: 18px;
  border: 1px solid transparent;
  border-radius: 2px;
}
.alert h4 {
  margin-top: 0;
  color: inherit;
}
.alert .alert-link {
  font-weight: bold;
}
.alert > p,
.alert > ul {
  margin-bottom: 0;
}
.alert > p + p {
  margin-top: 5px;
}
.alert-dismissable,
.alert-dismissible {
  padding-right: 35px;
}
.alert-dismissable .close,
.alert-dismissible .close {
  position: relative;
  top: -2px;
  right: -21px;
  color: inherit;
}
.alert-success {
  background-color: #dff0d8;
  border-color: #d6e9c6;
  color: #3c763d;
}
.alert-success hr {
  border-top-color: #c9e2b3;
}
.alert-success .alert-link {
  color: #2b542c;
}
.alert-info {
  background-color: #d9edf7;
  border-color: #bce8f1;
  color: #31708f;
}
.alert-info hr {
  border-top-color: #a6e1ec;
}
.alert-info .alert-link {
  color: #245269;
}
.alert-warning {
  background-color: #fcf8e3;
  border-color: #faebcc;
  color: #8a6d3b;
}
.alert-warning hr {
  border-top-color: #f7e1b5;
}
.alert-warning .alert-link {
  color: #66512c;
}
.alert-danger {
  background-color: #f2dede;
  border-color: #ebccd1;
  color: #a94442;
}
.alert-danger hr {
  border-top-color: #e4b9c0;
}
.alert-danger .alert-link {
  color: #843534;
}
@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}
.progress {
  overflow: hidden;
  height: 18px;
  margin-bottom: 18px;
  background-color: #f5f5f5;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}
.progress-bar {
  float: left;
  width: 0%;
  height: 100%;
  font-size: 12px;
  line-height: 18px;
  color: #fff;
  text-align: center;
  background-color: #337ab7;
  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  -webkit-transition: width 0.6s ease;
  -o-transition: width 0.6s ease;
  transition: width 0.6s ease;
}
.progress-striped .progress-bar,
.progress-bar-striped {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-size: 40px 40px;
}
.progress.active .progress-bar,
.progress-bar.active {
  -webkit-animation: progress-bar-stripes 2s linear infinite;
  -o-animation: progress-bar-stripes 2s linear infinite;
  animation: progress-bar-stripes 2s linear infinite;
}
.progress-bar-success {
  background-color: #5cb85c;
}
.progress-striped .progress-bar-success {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-info {
  background-color: #5bc0de;
}
.progress-striped .progress-bar-info {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-warning {
  background-color: #f0ad4e;
}
.progress-striped .progress-bar-warning {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.progress-bar-danger {
  background-color: #d9534f;
}
.progress-striped .progress-bar-danger {
  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
}
.media {
  margin-top: 15px;
}
.media:first-child {
  margin-top: 0;
}
.media,
.media-body {
  zoom: 1;
  overflow: hidden;
}
.media-body {
  width: 10000px;
}
.media-object {
  display: block;
}
.media-object.img-thumbnail {
  max-width: none;
}
.media-right,
.media > .pull-right {
  padding-left: 10px;
}
.media-left,
.media > .pull-left {
  padding-right: 10px;
}
.media-left,
.media-right,
.media-body {
  display: table-cell;
  vertical-align: top;
}
.media-middle {
  vertical-align: middle;
}
.media-bottom {
  vertical-align: bottom;
}
.media-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.media-list {
  padding-left: 0;
  list-style: none;
}
.list-group {
  margin-bottom: 20px;
  padding-left: 0;
}
.list-group-item {
  position: relative;
  display: block;
  padding: 10px 15px;
  margin-bottom: -1px;
  background-color: #fff;
  border: 1px solid #ddd;
}
.list-group-item:first-child {
  border-top-right-radius: 2px;
  border-top-left-radius: 2px;
}
.list-group-item:last-child {
  margin-bottom: 0;
  border-bottom-right-radius: 2px;
  border-bottom-left-radius: 2px;
}
a.list-group-item,
button.list-group-item {
  color: #555;
}
a.list-group-item .list-group-item-heading,
button.list-group-item .list-group-item-heading {
  color: #333;
}
a.list-group-item:hover,
button.list-group-item:hover,
a.list-group-item:focus,
button.list-group-item:focus {
  text-decoration: none;
  color: #555;
  background-color: #f5f5f5;
}
button.list-group-item {
  width: 100%;
  text-align: left;
}
.list-group-item.disabled,
.list-group-item.disabled:hover,
.list-group-item.disabled:focus {
  background-color: #eeeeee;
  color: #777777;
  cursor: not-allowed;
}
.list-group-item.disabled .list-group-item-heading,
.list-group-item.disabled:hover .list-group-item-heading,
.list-group-item.disabled:focus .list-group-item-heading {
  color: inherit;
}
.list-group-item.disabled .list-group-item-text,
.list-group-item.disabled:hover .list-group-item-text,
.list-group-item.disabled:focus .list-group-item-text {
  color: #777777;
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
  z-index: 2;
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.list-group-item.active .list-group-item-heading,
.list-group-item.active:hover .list-group-item-heading,
.list-group-item.active:focus .list-group-item-heading,
.list-group-item.active .list-group-item-heading > small,
.list-group-item.active:hover .list-group-item-heading > small,
.list-group-item.active:focus .list-group-item-heading > small,
.list-group-item.active .list-group-item-heading > .small,
.list-group-item.active:hover .list-group-item-heading > .small,
.list-group-item.active:focus .list-group-item-heading > .small {
  color: inherit;
}
.list-group-item.active .list-group-item-text,
.list-group-item.active:hover .list-group-item-text,
.list-group-item.active:focus .list-group-item-text {
  color: #c7ddef;
}
.list-group-item-success {
  color: #3c763d;
  background-color: #dff0d8;
}
a.list-group-item-success,
button.list-group-item-success {
  color: #3c763d;
}
a.list-group-item-success .list-group-item-heading,
button.list-group-item-success .list-group-item-heading {
  color: inherit;
}
a.list-group-item-success:hover,
button.list-group-item-success:hover,
a.list-group-item-success:focus,
button.list-group-item-success:focus {
  color: #3c763d;
  background-color: #d0e9c6;
}
a.list-group-item-success.active,
button.list-group-item-success.active,
a.list-group-item-success.active:hover,
button.list-group-item-success.active:hover,
a.list-group-item-success.active:focus,
button.list-group-item-success.active:focus {
  color: #fff;
  background-color: #3c763d;
  border-color: #3c763d;
}
.list-group-item-info {
  color: #31708f;
  background-color: #d9edf7;
}
a.list-group-item-info,
button.list-group-item-info {
  color: #31708f;
}
a.list-group-item-info .list-group-item-heading,
button.list-group-item-info .list-group-item-heading {
  color: inherit;
}
a.list-group-item-info:hover,
button.list-group-item-info:hover,
a.list-group-item-info:focus,
button.list-group-item-info:focus {
  color: #31708f;
  background-color: #c4e3f3;
}
a.list-group-item-info.active,
button.list-group-item-info.active,
a.list-group-item-info.active:hover,
button.list-group-item-info.active:hover,
a.list-group-item-info.active:focus,
button.list-group-item-info.active:focus {
  color: #fff;
  background-color: #31708f;
  border-color: #31708f;
}
.list-group-item-warning {
  color: #8a6d3b;
  background-color: #fcf8e3;
}
a.list-group-item-warning,
button.list-group-item-warning {
  color: #8a6d3b;
}
a.list-group-item-warning .list-group-item-heading,
button.list-group-item-warning .list-group-item-heading {
  color: inherit;
}
a.list-group-item-warning:hover,
button.list-group-item-warning:hover,
a.list-group-item-warning:focus,
button.list-group-item-warning:focus {
  color: #8a6d3b;
  background-color: #faf2cc;
}
a.list-group-item-warning.active,
button.list-group-item-warning.active,
a.list-group-item-warning.active:hover,
button.list-group-item-warning.active:hover,
a.list-group-item-warning.active:focus,
button.list-group-item-warning.active:focus {
  color: #fff;
  background-color: #8a6d3b;
  border-color: #8a6d3b;
}
.list-group-item-danger {
  color: #a94442;
  background-color: #f2dede;
}
a.list-group-item-danger,
button.list-group-item-danger {
  color: #a94442;
}
a.list-group-item-danger .list-group-item-heading,
button.list-group-item-danger .list-group-item-heading {
  color: inherit;
}
a.list-group-item-danger:hover,
button.list-group-item-danger:hover,
a.list-group-item-danger:focus,
button.list-group-item-danger:focus {
  color: #a94442;
  background-color: #ebcccc;
}
a.list-group-item-danger.active,
button.list-group-item-danger.active,
a.list-group-item-danger.active:hover,
button.list-group-item-danger.active:hover,
a.list-group-item-danger.active:focus,
button.list-group-item-danger.active:focus {
  color: #fff;
  background-color: #a94442;
  border-color: #a94442;
}
.list-group-item-heading {
  margin-top: 0;
  margin-bottom: 5px;
}
.list-group-item-text {
  margin-bottom: 0;
  line-height: 1.3;
}
.panel {
  margin-bottom: 18px;
  background-color: #fff;
  border: 1px solid transparent;
  border-radius: 2px;
  -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
}
.panel-body {
  padding: 15px;
}
.panel-heading {
  padding: 10px 15px;
  border-bottom: 1px solid transparent;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel-heading > .dropdown .dropdown-toggle {
  color: inherit;
}
.panel-title {
  margin-top: 0;
  margin-bottom: 0;
  font-size: 15px;
  color: inherit;
}
.panel-title > a,
.panel-title > small,
.panel-title > .small,
.panel-title > small > a,
.panel-title > .small > a {
  color: inherit;
}
.panel-footer {
  padding: 10px 15px;
  background-color: #f5f5f5;
  border-top: 1px solid #ddd;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .list-group,
.panel > .panel-collapse > .list-group {
  margin-bottom: 0;
}
.panel > .list-group .list-group-item,
.panel > .panel-collapse > .list-group .list-group-item {
  border-width: 1px 0;
  border-radius: 0;
}
.panel > .list-group:first-child .list-group-item:first-child,
.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
  border-top: 0;
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .list-group:last-child .list-group-item:last-child,
.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
  border-bottom: 0;
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
  border-top-right-radius: 0;
  border-top-left-radius: 0;
}
.panel-heading + .list-group .list-group-item:first-child {
  border-top-width: 0;
}
.list-group + .panel-footer {
  border-top-width: 0;
}
.panel > .table,
.panel > .table-responsive > .table,
.panel > .panel-collapse > .table {
  margin-bottom: 0;
}
.panel > .table caption,
.panel > .table-responsive > .table caption,
.panel > .panel-collapse > .table caption {
  padding-left: 15px;
  padding-right: 15px;
}
.panel > .table:first-child,
.panel > .table-responsive:first-child > .table:first-child {
  border-top-right-radius: 1px;
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
  border-top-left-radius: 1px;
  border-top-right-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
  border-top-left-radius: 1px;
}
.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
  border-top-right-radius: 1px;
}
.panel > .table:last-child,
.panel > .table-responsive:last-child > .table:last-child {
  border-bottom-right-radius: 1px;
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
  border-bottom-left-radius: 1px;
  border-bottom-right-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
  border-bottom-left-radius: 1px;
}
.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
  border-bottom-right-radius: 1px;
}
.panel > .panel-body + .table,
.panel > .panel-body + .table-responsive,
.panel > .table + .panel-body,
.panel > .table-responsive + .panel-body {
  border-top: 1px solid #ddd;
}
.panel > .table > tbody:first-child > tr:first-child th,
.panel > .table > tbody:first-child > tr:first-child td {
  border-top: 0;
}
.panel > .table-bordered,
.panel > .table-responsive > .table-bordered {
  border: 0;
}
.panel > .table-bordered > thead > tr > th:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
.panel > .table-bordered > tbody > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
.panel > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
.panel > .table-bordered > thead > tr > td:first-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
.panel > .table-bordered > tbody > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
.panel > .table-bordered > tfoot > tr > td:first-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
  border-left: 0;
}
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
  border-right: 0;
}
.panel > .table-bordered > thead > tr:first-child > td,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
.panel > .table-bordered > tbody > tr:first-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
.panel > .table-bordered > thead > tr:first-child > th,
.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
.panel > .table-bordered > tbody > tr:first-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
  border-bottom: 0;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
  border-bottom: 0;
}
.panel > .table-responsive {
  border: 0;
  margin-bottom: 0;
}
.panel-group {
  margin-bottom: 18px;
}
.panel-group .panel {
  margin-bottom: 0;
  border-radius: 2px;
}
.panel-group .panel + .panel {
  margin-top: 5px;
}
.panel-group .panel-heading {
  border-bottom: 0;
}
.panel-group .panel-heading + .panel-collapse > .panel-body,
.panel-group .panel-heading + .panel-collapse > .list-group {
  border-top: 1px solid #ddd;
}
.panel-group .panel-footer {
  border-top: 0;
}
.panel-group .panel-footer + .panel-collapse .panel-body {
  border-bottom: 1px solid #ddd;
}
.panel-default {
  border-color: #ddd;
}
.panel-default > .panel-heading {
  color: #333333;
  background-color: #f5f5f5;
  border-color: #ddd;
}
.panel-default > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ddd;
}
.panel-default > .panel-heading .badge {
  color: #f5f5f5;
  background-color: #333333;
}
.panel-default > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ddd;
}
.panel-primary {
  border-color: #337ab7;
}
.panel-primary > .panel-heading {
  color: #fff;
  background-color: #337ab7;
  border-color: #337ab7;
}
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #337ab7;
}
.panel-primary > .panel-heading .badge {
  color: #337ab7;
  background-color: #fff;
}
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #337ab7;
}
.panel-success {
  border-color: #d6e9c6;
}
.panel-success > .panel-heading {
  color: #3c763d;
  background-color: #dff0d8;
  border-color: #d6e9c6;
}
.panel-success > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #d6e9c6;
}
.panel-success > .panel-heading .badge {
  color: #dff0d8;
  background-color: #3c763d;
}
.panel-success > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #d6e9c6;
}
.panel-info {
  border-color: #bce8f1;
}
.panel-info > .panel-heading {
  color: #31708f;
  background-color: #d9edf7;
  border-color: #bce8f1;
}
.panel-info > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #bce8f1;
}
.panel-info > .panel-heading .badge {
  color: #d9edf7;
  background-color: #31708f;
}
.panel-info > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #bce8f1;
}
.panel-warning {
  border-color: #faebcc;
}
.panel-warning > .panel-heading {
  color: #8a6d3b;
  background-color: #fcf8e3;
  border-color: #faebcc;
}
.panel-warning > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #faebcc;
}
.panel-warning > .panel-heading .badge {
  color: #fcf8e3;
  background-color: #8a6d3b;
}
.panel-warning > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #faebcc;
}
.panel-danger {
  border-color: #ebccd1;
}
.panel-danger > .panel-heading {
  color: #a94442;
  background-color: #f2dede;
  border-color: #ebccd1;
}
.panel-danger > .panel-heading + .panel-collapse > .panel-body {
  border-top-color: #ebccd1;
}
.panel-danger > .panel-heading .badge {
  color: #f2dede;
  background-color: #a94442;
}
.panel-danger > .panel-footer + .panel-collapse > .panel-body {
  border-bottom-color: #ebccd1;
}
.embed-responsive {
  position: relative;
  display: block;
  height: 0;
  padding: 0;
  overflow: hidden;
}
.embed-responsive .embed-responsive-item,
.embed-responsive iframe,
.embed-responsive embed,
.embed-responsive object,
.embed-responsive video {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  height: 100%;
  width: 100%;
  border: 0;
}
.embed-responsive-16by9 {
  padding-bottom: 56.25%;
}
.embed-responsive-4by3 {
  padding-bottom: 75%;
}
.well {
  min-height: 20px;
  padding: 19px;
  margin-bottom: 20px;
  background-color: #f5f5f5;
  border: 1px solid #e3e3e3;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);
}
.well blockquote {
  border-color: #ddd;
  border-color: rgba(0, 0, 0, 0.15);
}
.well-lg {
  padding: 24px;
  border-radius: 3px;
}
.well-sm {
  padding: 9px;
  border-radius: 1px;
}
.close {
  float: right;
  font-size: 19.5px;
  font-weight: bold;
  line-height: 1;
  color: #000;
  text-shadow: 0 1px 0 #fff;
  opacity: 0.2;
  filter: alpha(opacity=20);
}
.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.5;
  filter: alpha(opacity=50);
}
button.close {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}
.modal-open {
  overflow: hidden;
}
.modal {
  display: none;
  overflow: hidden;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1050;
  -webkit-overflow-scrolling: touch;
  outline: 0;
}
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, -25%);
  -ms-transform: translate(0, -25%);
  -o-transform: translate(0, -25%);
  transform: translate(0, -25%);
  -webkit-transition: -webkit-transform 0.3s ease-out;
  -moz-transition: -moz-transform 0.3s ease-out;
  -o-transition: -o-transform 0.3s ease-out;
  transition: transform 0.3s ease-out;
}
.modal.in .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
.modal-open .modal {
  overflow-x: hidden;
  overflow-y: auto;
}
.modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}
.modal-content {
  position: relative;
  background-color: #fff;
  border: 1px solid #999;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);
  background-clip: padding-box;
  outline: 0;
}
.modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1040;
  background-color: #000;
}
.modal-backdrop.fade {
  opacity: 0;
  filter: alpha(opacity=0);
}
.modal-backdrop.in {
  opacity: 0.5;
  filter: alpha(opacity=50);
}
.modal-header {
  padding: 15px;
  border-bottom: 1px solid #e5e5e5;
}
.modal-header .close {
  margin-top: -2px;
}
.modal-title {
  margin: 0;
  line-height: 1.42857143;
}
.modal-body {
  position: relative;
  padding: 15px;
}
.modal-footer {
  padding: 15px;
  text-align: right;
  border-top: 1px solid #e5e5e5;
}
.modal-footer .btn + .btn {
  margin-left: 5px;
  margin-bottom: 0;
}
.modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
}
.modal-footer .btn-block + .btn-block {
  margin-left: 0;
}
.modal-scrollbar-measure {
  position: absolute;
  top: -9999px;
  width: 50px;
  height: 50px;
  overflow: scroll;
}
@media (min-width: 768px) {
  .modal-dialog {
    width: 600px;
    margin: 30px auto;
  }
  .modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);
  }
  .modal-sm {
    width: 300px;
  }
}
@media (min-width: 992px) {
  .modal-lg {
    width: 900px;
  }
}
.tooltip {
  position: absolute;
  z-index: 1070;
  display: block;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 12px;
  opacity: 0;
  filter: alpha(opacity=0);
}
.tooltip.in {
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.tooltip.top {
  margin-top: -3px;
  padding: 5px 0;
}
.tooltip.right {
  margin-left: 3px;
  padding: 0 5px;
}
.tooltip.bottom {
  margin-top: 3px;
  padding: 5px 0;
}
.tooltip.left {
  margin-left: -3px;
  padding: 0 5px;
}
.tooltip-inner {
  max-width: 200px;
  padding: 3px 8px;
  color: #fff;
  text-align: center;
  background-color: #000;
  border-radius: 2px;
}
.tooltip-arrow {
  position: absolute;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.tooltip.top .tooltip-arrow {
  bottom: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-left .tooltip-arrow {
  bottom: 0;
  right: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.top-right .tooltip-arrow {
  bottom: 0;
  left: 5px;
  margin-bottom: -5px;
  border-width: 5px 5px 0;
  border-top-color: #000;
}
.tooltip.right .tooltip-arrow {
  top: 50%;
  left: 0;
  margin-top: -5px;
  border-width: 5px 5px 5px 0;
  border-right-color: #000;
}
.tooltip.left .tooltip-arrow {
  top: 50%;
  right: 0;
  margin-top: -5px;
  border-width: 5px 0 5px 5px;
  border-left-color: #000;
}
.tooltip.bottom .tooltip-arrow {
  top: 0;
  left: 50%;
  margin-left: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-left .tooltip-arrow {
  top: 0;
  right: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.tooltip.bottom-right .tooltip-arrow {
  top: 0;
  left: 5px;
  margin-top: -5px;
  border-width: 0 5px 5px;
  border-bottom-color: #000;
}
.popover {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1060;
  display: none;
  max-width: 276px;
  padding: 1px;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-style: normal;
  font-weight: normal;
  letter-spacing: normal;
  line-break: auto;
  line-height: 1.42857143;
  text-align: left;
  text-align: start;
  text-decoration: none;
  text-shadow: none;
  text-transform: none;
  white-space: normal;
  word-break: normal;
  word-spacing: normal;
  word-wrap: normal;
  font-size: 13px;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #ccc;
  border: 1px solid rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
}
.popover.top {
  margin-top: -10px;
}
.popover.right {
  margin-left: 10px;
}
.popover.bottom {
  margin-top: 10px;
}
.popover.left {
  margin-left: -10px;
}
.popover-title {
  margin: 0;
  padding: 8px 14px;
  font-size: 13px;
  background-color: #f7f7f7;
  border-bottom: 1px solid #ebebeb;
  border-radius: 2px 2px 0 0;
}
.popover-content {
  padding: 9px 14px;
}
.popover > .arrow,
.popover > .arrow:after {
  position: absolute;
  display: block;
  width: 0;
  height: 0;
  border-color: transparent;
  border-style: solid;
}
.popover > .arrow {
  border-width: 11px;
}
.popover > .arrow:after {
  border-width: 10px;
  content: "";
}
.popover.top > .arrow {
  left: 50%;
  margin-left: -11px;
  border-bottom-width: 0;
  border-top-color: #999999;
  border-top-color: rgba(0, 0, 0, 0.25);
  bottom: -11px;
}
.popover.top > .arrow:after {
  content: " ";
  bottom: 1px;
  margin-left: -10px;
  border-bottom-width: 0;
  border-top-color: #fff;
}
.popover.right > .arrow {
  top: 50%;
  left: -11px;
  margin-top: -11px;
  border-left-width: 0;
  border-right-color: #999999;
  border-right-color: rgba(0, 0, 0, 0.25);
}
.popover.right > .arrow:after {
  content: " ";
  left: 1px;
  bottom: -10px;
  border-left-width: 0;
  border-right-color: #fff;
}
.popover.bottom > .arrow {
  left: 50%;
  margin-left: -11px;
  border-top-width: 0;
  border-bottom-color: #999999;
  border-bottom-color: rgba(0, 0, 0, 0.25);
  top: -11px;
}
.popover.bottom > .arrow:after {
  content: " ";
  top: 1px;
  margin-left: -10px;
  border-top-width: 0;
  border-bottom-color: #fff;
}
.popover.left > .arrow {
  top: 50%;
  right: -11px;
  margin-top: -11px;
  border-right-width: 0;
  border-left-color: #999999;
  border-left-color: rgba(0, 0, 0, 0.25);
}
.popover.left > .arrow:after {
  content: " ";
  right: 1px;
  border-right-width: 0;
  border-left-color: #fff;
  bottom: -10px;
}
.carousel {
  position: relative;
}
.carousel-inner {
  position: relative;
  overflow: hidden;
  width: 100%;
}
.carousel-inner > .item {
  display: none;
  position: relative;
  -webkit-transition: 0.6s ease-in-out left;
  -o-transition: 0.6s ease-in-out left;
  transition: 0.6s ease-in-out left;
}
.carousel-inner > .item > img,
.carousel-inner > .item > a > img {
  line-height: 1;
}
@media all and (transform-3d), (-webkit-transform-3d) {
  .carousel-inner > .item {
    -webkit-transition: -webkit-transform 0.6s ease-in-out;
    -moz-transition: -moz-transform 0.6s ease-in-out;
    -o-transition: -o-transform 0.6s ease-in-out;
    transition: transform 0.6s ease-in-out;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    backface-visibility: hidden;
    -webkit-perspective: 1000px;
    -moz-perspective: 1000px;
    perspective: 1000px;
  }
  .carousel-inner > .item.next,
  .carousel-inner > .item.active.right {
    -webkit-transform: translate3d(100%, 0, 0);
    transform: translate3d(100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.prev,
  .carousel-inner > .item.active.left {
    -webkit-transform: translate3d(-100%, 0, 0);
    transform: translate3d(-100%, 0, 0);
    left: 0;
  }
  .carousel-inner > .item.next.left,
  .carousel-inner > .item.prev.right,
  .carousel-inner > .item.active {
    -webkit-transform: translate3d(0, 0, 0);
    transform: translate3d(0, 0, 0);
    left: 0;
  }
}
.carousel-inner > .active,
.carousel-inner > .next,
.carousel-inner > .prev {
  display: block;
}
.carousel-inner > .active {
  left: 0;
}
.carousel-inner > .next,
.carousel-inner > .prev {
  position: absolute;
  top: 0;
  width: 100%;
}
.carousel-inner > .next {
  left: 100%;
}
.carousel-inner > .prev {
  left: -100%;
}
.carousel-inner > .next.left,
.carousel-inner > .prev.right {
  left: 0;
}
.carousel-inner > .active.left {
  left: -100%;
}
.carousel-inner > .active.right {
  left: 100%;
}
.carousel-control {
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 15%;
  opacity: 0.5;
  filter: alpha(opacity=50);
  font-size: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
  background-color: rgba(0, 0, 0, 0);
}
.carousel-control.left {
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
}
.carousel-control.right {
  left: auto;
  right: 0;
  background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: -o-linear-gradient(left, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);
  background-repeat: repeat-x;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
}
.carousel-control:hover,
.carousel-control:focus {
  outline: 0;
  color: #fff;
  text-decoration: none;
  opacity: 0.9;
  filter: alpha(opacity=90);
}
.carousel-control .icon-prev,
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-left,
.carousel-control .glyphicon-chevron-right {
  position: absolute;
  top: 50%;
  margin-top: -10px;
  z-index: 5;
  display: inline-block;
}
.carousel-control .icon-prev,
.carousel-control .glyphicon-chevron-left {
  left: 50%;
  margin-left: -10px;
}
.carousel-control .icon-next,
.carousel-control .glyphicon-chevron-right {
  right: 50%;
  margin-right: -10px;
}
.carousel-control .icon-prev,
.carousel-control .icon-next {
  width: 20px;
  height: 20px;
  line-height: 1;
  font-family: serif;
}
.carousel-control .icon-prev:before {
  content: '\2039';
}
.carousel-control .icon-next:before {
  content: '\203a';
}
.carousel-indicators {
  position: absolute;
  bottom: 10px;
  left: 50%;
  z-index: 15;
  width: 60%;
  margin-left: -30%;
  padding-left: 0;
  list-style: none;
  text-align: center;
}
.carousel-indicators li {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin: 1px;
  text-indent: -999px;
  border: 1px solid #fff;
  border-radius: 10px;
  cursor: pointer;
  background-color: #000 \9;
  background-color: rgba(0, 0, 0, 0);
}
.carousel-indicators .active {
  margin: 0;
  width: 12px;
  height: 12px;
  background-color: #fff;
}
.carousel-caption {
  position: absolute;
  left: 15%;
  right: 15%;
  bottom: 20px;
  z-index: 10;
  padding-top: 20px;
  padding-bottom: 20px;
  color: #fff;
  text-align: center;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
}
.carousel-caption .btn {
  text-shadow: none;
}
@media screen and (min-width: 768px) {
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-prev,
  .carousel-control .icon-next {
    width: 30px;
    height: 30px;
    margin-top: -10px;
    font-size: 30px;
  }
  .carousel-control .glyphicon-chevron-left,
  .carousel-control .icon-prev {
    margin-left: -10px;
  }
  .carousel-control .glyphicon-chevron-right,
  .carousel-control .icon-next {
    margin-right: -10px;
  }
  .carousel-caption {
    left: 20%;
    right: 20%;
    padding-bottom: 30px;
  }
  .carousel-indicators {
    bottom: 20px;
  }
}
.clearfix:before,
.clearfix:after,
.dl-horizontal dd:before,
.dl-horizontal dd:after,
.container:before,
.container:after,
.container-fluid:before,
.container-fluid:after,
.row:before,
.row:after,
.form-horizontal .form-group:before,
.form-horizontal .form-group:after,
.btn-toolbar:before,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:before,
.btn-group-vertical > .btn-group:after,
.nav:before,
.nav:after,
.navbar:before,
.navbar:after,
.navbar-header:before,
.navbar-header:after,
.navbar-collapse:before,
.navbar-collapse:after,
.pager:before,
.pager:after,
.panel-body:before,
.panel-body:after,
.modal-header:before,
.modal-header:after,
.modal-footer:before,
.modal-footer:after,
.item_buttons:before,
.item_buttons:after {
  content: " ";
  display: table;
}
.clearfix:after,
.dl-horizontal dd:after,
.container:after,
.container-fluid:after,
.row:after,
.form-horizontal .form-group:after,
.btn-toolbar:after,
.btn-group-vertical > .btn-group:after,
.nav:after,
.navbar:after,
.navbar-header:after,
.navbar-collapse:after,
.pager:after,
.panel-body:after,
.modal-header:after,
.modal-footer:after,
.item_buttons:after {
  clear: both;
}
.center-block {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.pull-right {
  float: right !important;
}
.pull-left {
  float: left !important;
}
.hide {
  display: none !important;
}
.show {
  display: block !important;
}
.invisible {
  visibility: hidden;
}
.text-hide {
  font: 0/0 a;
  color: transparent;
  text-shadow: none;
  background-color: transparent;
  border: 0;
}
.hidden {
  display: none !important;
}
.affix {
  position: fixed;
}
@-ms-viewport {
  width: device-width;
}
.visible-xs,
.visible-sm,
.visible-md,
.visible-lg {
  display: none !important;
}
.visible-xs-block,
.visible-xs-inline,
.visible-xs-inline-block,
.visible-sm-block,
.visible-sm-inline,
.visible-sm-inline-block,
.visible-md-block,
.visible-md-inline,
.visible-md-inline-block,
.visible-lg-block,
.visible-lg-inline,
.visible-lg-inline-block {
  display: none !important;
}
@media (max-width: 767px) {
  .visible-xs {
    display: block !important;
  }
  table.visible-xs {
    display: table !important;
  }
  tr.visible-xs {
    display: table-row !important;
  }
  th.visible-xs,
  td.visible-xs {
    display: table-cell !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-block {
    display: block !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline {
    display: inline !important;
  }
}
@media (max-width: 767px) {
  .visible-xs-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm {
    display: block !important;
  }
  table.visible-sm {
    display: table !important;
  }
  tr.visible-sm {
    display: table-row !important;
  }
  th.visible-sm,
  td.visible-sm {
    display: table-cell !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-block {
    display: block !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline {
    display: inline !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .visible-sm-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md {
    display: block !important;
  }
  table.visible-md {
    display: table !important;
  }
  tr.visible-md {
    display: table-row !important;
  }
  th.visible-md,
  td.visible-md {
    display: table-cell !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-block {
    display: block !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline {
    display: inline !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .visible-md-inline-block {
    display: inline-block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg {
    display: block !important;
  }
  table.visible-lg {
    display: table !important;
  }
  tr.visible-lg {
    display: table-row !important;
  }
  th.visible-lg,
  td.visible-lg {
    display: table-cell !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-block {
    display: block !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline {
    display: inline !important;
  }
}
@media (min-width: 1200px) {
  .visible-lg-inline-block {
    display: inline-block !important;
  }
}
@media (max-width: 767px) {
  .hidden-xs {
    display: none !important;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  .hidden-sm {
    display: none !important;
  }
}
@media (min-width: 992px) and (max-width: 1199px) {
  .hidden-md {
    display: none !important;
  }
}
@media (min-width: 1200px) {
  .hidden-lg {
    display: none !important;
  }
}
.visible-print {
  display: none !important;
}
@media print {
  .visible-print {
    display: block !important;
  }
  table.visible-print {
    display: table !important;
  }
  tr.visible-print {
    display: table-row !important;
  }
  th.visible-print,
  td.visible-print {
    display: table-cell !important;
  }
}
.visible-print-block {
  display: none !important;
}
@media print {
  .visible-print-block {
    display: block !important;
  }
}
.visible-print-inline {
  display: none !important;
}
@media print {
  .visible-print-inline {
    display: inline !important;
  }
}
.visible-print-inline-block {
  display: none !important;
}
@media print {
  .visible-print-inline-block {
    display: inline-block !important;
  }
}
@media print {
  .hidden-print {
    display: none !important;
  }
}
/*!
*
* Font Awesome
*
*/
/*!
 *  Font Awesome 4.2.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?v=4.2.0');
  src: url('../components/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.2.0') format('embedded-opentype'), url('../components/font-awesome/fonts/fontawesome-webfont.woff?v=4.2.0') format('woff'), url('../components/font-awesome/fonts/fontawesome-webfont.ttf?v=4.2.0') format('truetype'), url('../components/font-awesome/fonts/fontawesome-webfont.svg?v=4.2.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul > li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eee;
  border-radius: .1em;
}
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1);
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2);
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #fff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "\f000";
}
.fa-music:before {
  content: "\f001";
}
.fa-search:before {
  content: "\f002";
}
.fa-envelope-o:before {
  content: "\f003";
}
.fa-heart:before {
  content: "\f004";
}
.fa-star:before {
  content: "\f005";
}
.fa-star-o:before {
  content: "\f006";
}
.fa-user:before {
  content: "\f007";
}
.fa-film:before {
  content: "\f008";
}
.fa-th-large:before {
  content: "\f009";
}
.fa-th:before {
  content: "\f00a";
}
.fa-th-list:before {
  content: "\f00b";
}
.fa-check:before {
  content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "\f00d";
}
.fa-search-plus:before {
  content: "\f00e";
}
.fa-search-minus:before {
  content: "\f010";
}
.fa-power-off:before {
  content: "\f011";
}
.fa-signal:before {
  content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
  content: "\f013";
}
.fa-trash-o:before {
  content: "\f014";
}
.fa-home:before {
  content: "\f015";
}
.fa-file-o:before {
  content: "\f016";
}
.fa-clock-o:before {
  content: "\f017";
}
.fa-road:before {
  content: "\f018";
}
.fa-download:before {
  content: "\f019";
}
.fa-arrow-circle-o-down:before {
  content: "\f01a";
}
.fa-arrow-circle-o-up:before {
  content: "\f01b";
}
.fa-inbox:before {
  content: "\f01c";
}
.fa-play-circle-o:before {
  content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: "\f01e";
}
.fa-refresh:before {
  content: "\f021";
}
.fa-list-alt:before {
  content: "\f022";
}
.fa-lock:before {
  content: "\f023";
}
.fa-flag:before {
  content: "\f024";
}
.fa-headphones:before {
  content: "\f025";
}
.fa-volume-off:before {
  content: "\f026";
}
.fa-volume-down:before {
  content: "\f027";
}
.fa-volume-up:before {
  content: "\f028";
}
.fa-qrcode:before {
  content: "\f029";
}
.fa-barcode:before {
  content: "\f02a";
}
.fa-tag:before {
  content: "\f02b";
}
.fa-tags:before {
  content: "\f02c";
}
.fa-book:before {
  content: "\f02d";
}
.fa-bookmark:before {
  content: "\f02e";
}
.fa-print:before {
  content: "\f02f";
}
.fa-camera:before {
  content: "\f030";
}
.fa-font:before {
  content: "\f031";
}
.fa-bold:before {
  content: "\f032";
}
.fa-italic:before {
  content: "\f033";
}
.fa-text-height:before {
  content: "\f034";
}
.fa-text-width:before {
  content: "\f035";
}
.fa-align-left:before {
  content: "\f036";
}
.fa-align-center:before {
  content: "\f037";
}
.fa-align-right:before {
  content: "\f038";
}
.fa-align-justify:before {
  content: "\f039";
}
.fa-list:before {
  content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
  content: "\f03b";
}
.fa-indent:before {
  content: "\f03c";
}
.fa-video-camera:before {
  content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "\f03e";
}
.fa-pencil:before {
  content: "\f040";
}
.fa-map-marker:before {
  content: "\f041";
}
.fa-adjust:before {
  content: "\f042";
}
.fa-tint:before {
  content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: "\f044";
}
.fa-share-square-o:before {
  content: "\f045";
}
.fa-check-square-o:before {
  content: "\f046";
}
.fa-arrows:before {
  content: "\f047";
}
.fa-step-backward:before {
  content: "\f048";
}
.fa-fast-backward:before {
  content: "\f049";
}
.fa-backward:before {
  content: "\f04a";
}
.fa-play:before {
  content: "\f04b";
}
.fa-pause:before {
  content: "\f04c";
}
.fa-stop:before {
  content: "\f04d";
}
.fa-forward:before {
  content: "\f04e";
}
.fa-fast-forward:before {
  content: "\f050";
}
.fa-step-forward:before {
  content: "\f051";
}
.fa-eject:before {
  content: "\f052";
}
.fa-chevron-left:before {
  content: "\f053";
}
.fa-chevron-right:before {
  content: "\f054";
}
.fa-plus-circle:before {
  content: "\f055";
}
.fa-minus-circle:before {
  content: "\f056";
}
.fa-times-circle:before {
  content: "\f057";
}
.fa-check-circle:before {
  content: "\f058";
}
.fa-question-circle:before {
  content: "\f059";
}
.fa-info-circle:before {
  content: "\f05a";
}
.fa-crosshairs:before {
  content: "\f05b";
}
.fa-times-circle-o:before {
  content: "\f05c";
}
.fa-check-circle-o:before {
  content: "\f05d";
}
.fa-ban:before {
  content: "\f05e";
}
.fa-arrow-left:before {
  content: "\f060";
}
.fa-arrow-right:before {
  content: "\f061";
}
.fa-arrow-up:before {
  content: "\f062";
}
.fa-arrow-down:before {
  content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
  content: "\f064";
}
.fa-expand:before {
  content: "\f065";
}
.fa-compress:before {
  content: "\f066";
}
.fa-plus:before {
  content: "\f067";
}
.fa-minus:before {
  content: "\f068";
}
.fa-asterisk:before {
  content: "\f069";
}
.fa-exclamation-circle:before {
  content: "\f06a";
}
.fa-gift:before {
  content: "\f06b";
}
.fa-leaf:before {
  content: "\f06c";
}
.fa-fire:before {
  content: "\f06d";
}
.fa-eye:before {
  content: "\f06e";
}
.fa-eye-slash:before {
  content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "\f071";
}
.fa-plane:before {
  content: "\f072";
}
.fa-calendar:before {
  content: "\f073";
}
.fa-random:before {
  content: "\f074";
}
.fa-comment:before {
  content: "\f075";
}
.fa-magnet:before {
  content: "\f076";
}
.fa-chevron-up:before {
  content: "\f077";
}
.fa-chevron-down:before {
  content: "\f078";
}
.fa-retweet:before {
  content: "\f079";
}
.fa-shopping-cart:before {
  content: "\f07a";
}
.fa-folder:before {
  content: "\f07b";
}
.fa-folder-open:before {
  content: "\f07c";
}
.fa-arrows-v:before {
  content: "\f07d";
}
.fa-arrows-h:before {
  content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "\f080";
}
.fa-twitter-square:before {
  content: "\f081";
}
.fa-facebook-square:before {
  content: "\f082";
}
.fa-camera-retro:before {
  content: "\f083";
}
.fa-key:before {
  content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
  content: "\f085";
}
.fa-comments:before {
  content: "\f086";
}
.fa-thumbs-o-up:before {
  content: "\f087";
}
.fa-thumbs-o-down:before {
  content: "\f088";
}
.fa-star-half:before {
  content: "\f089";
}
.fa-heart-o:before {
  content: "\f08a";
}
.fa-sign-out:before {
  content: "\f08b";
}
.fa-linkedin-square:before {
  content: "\f08c";
}
.fa-thumb-tack:before {
  content: "\f08d";
}
.fa-external-link:before {
  content: "\f08e";
}
.fa-sign-in:before {
  content: "\f090";
}
.fa-trophy:before {
  content: "\f091";
}
.fa-github-square:before {
  content: "\f092";
}
.fa-upload:before {
  content: "\f093";
}
.fa-lemon-o:before {
  content: "\f094";
}
.fa-phone:before {
  content: "\f095";
}
.fa-square-o:before {
  content: "\f096";
}
.fa-bookmark-o:before {
  content: "\f097";
}
.fa-phone-square:before {
  content: "\f098";
}
.fa-twitter:before {
  content: "\f099";
}
.fa-facebook:before {
  content: "\f09a";
}
.fa-github:before {
  content: "\f09b";
}
.fa-unlock:before {
  content: "\f09c";
}
.fa-credit-card:before {
  content: "\f09d";
}
.fa-rss:before {
  content: "\f09e";
}
.fa-hdd-o:before {
  content: "\f0a0";
}
.fa-bullhorn:before {
  content: "\f0a1";
}
.fa-bell:before {
  content: "\f0f3";
}
.fa-certificate:before {
  content: "\f0a3";
}
.fa-hand-o-right:before {
  content: "\f0a4";
}
.fa-hand-o-left:before {
  content: "\f0a5";
}
.fa-hand-o-up:before {
  content: "\f0a6";
}
.fa-hand-o-down:before {
  content: "\f0a7";
}
.fa-arrow-circle-left:before {
  content: "\f0a8";
}
.fa-arrow-circle-right:before {
  content: "\f0a9";
}
.fa-arrow-circle-up:before {
  content: "\f0aa";
}
.fa-arrow-circle-down:before {
  content: "\f0ab";
}
.fa-globe:before {
  content: "\f0ac";
}
.fa-wrench:before {
  content: "\f0ad";
}
.fa-tasks:before {
  content: "\f0ae";
}
.fa-filter:before {
  content: "\f0b0";
}
.fa-briefcase:before {
  content: "\f0b1";
}
.fa-arrows-alt:before {
  content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
  content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
  content: "\f0c1";
}
.fa-cloud:before {
  content: "\f0c2";
}
.fa-flask:before {
  content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
  content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}
.fa-paperclip:before {
  content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
  content: "\f0c7";
}
.fa-square:before {
  content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "\f0c9";
}
.fa-list-ul:before {
  content: "\f0ca";
}
.fa-list-ol:before {
  content: "\f0cb";
}
.fa-strikethrough:before {
  content: "\f0cc";
}
.fa-underline:before {
  content: "\f0cd";
}
.fa-table:before {
  content: "\f0ce";
}
.fa-magic:before {
  content: "\f0d0";
}
.fa-truck:before {
  content: "\f0d1";
}
.fa-pinterest:before {
  content: "\f0d2";
}
.fa-pinterest-square:before {
  content: "\f0d3";
}
.fa-google-plus-square:before {
  content: "\f0d4";
}
.fa-google-plus:before {
  content: "\f0d5";
}
.fa-money:before {
  content: "\f0d6";
}
.fa-caret-down:before {
  content: "\f0d7";
}
.fa-caret-up:before {
  content: "\f0d8";
}
.fa-caret-left:before {
  content: "\f0d9";
}
.fa-caret-right:before {
  content: "\f0da";
}
.fa-columns:before {
  content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
  content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: "\f0de";
}
.fa-envelope:before {
  content: "\f0e0";
}
.fa-linkedin:before {
  content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
  content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
  content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: "\f0e4";
}
.fa-comment-o:before {
  content: "\f0e5";
}
.fa-comments-o:before {
  content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
  content: "\f0e7";
}
.fa-sitemap:before {
  content: "\f0e8";
}
.fa-umbrella:before {
  content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
  content: "\f0ea";
}
.fa-lightbulb-o:before {
  content: "\f0eb";
}
.fa-exchange:before {
  content: "\f0ec";
}
.fa-cloud-download:before {
  content: "\f0ed";
}
.fa-cloud-upload:before {
  content: "\f0ee";
}
.fa-user-md:before {
  content: "\f0f0";
}
.fa-stethoscope:before {
  content: "\f0f1";
}
.fa-suitcase:before {
  content: "\f0f2";
}
.fa-bell-o:before {
  content: "\f0a2";
}
.fa-coffee:before {
  content: "\f0f4";
}
.fa-cutlery:before {
  content: "\f0f5";
}
.fa-file-text-o:before {
  content: "\f0f6";
}
.fa-building-o:before {
  content: "\f0f7";
}
.fa-hospital-o:before {
  content: "\f0f8";
}
.fa-ambulance:before {
  content: "\f0f9";
}
.fa-medkit:before {
  content: "\f0fa";
}
.fa-fighter-jet:before {
  content: "\f0fb";
}
.fa-beer:before {
  content: "\f0fc";
}
.fa-h-square:before {
  content: "\f0fd";
}
.fa-plus-square:before {
  content: "\f0fe";
}
.fa-angle-double-left:before {
  content: "\f100";
}
.fa-angle-double-right:before {
  content: "\f101";
}
.fa-angle-double-up:before {
  content: "\f102";
}
.fa-angle-double-down:before {
  content: "\f103";
}
.fa-angle-left:before {
  content: "\f104";
}
.fa-angle-right:before {
  content: "\f105";
}
.fa-angle-up:before {
  content: "\f106";
}
.fa-angle-down:before {
  content: "\f107";
}
.fa-desktop:before {
  content: "\f108";
}
.fa-laptop:before {
  content: "\f109";
}
.fa-tablet:before {
  content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: "\f10b";
}
.fa-circle-o:before {
  content: "\f10c";
}
.fa-quote-left:before {
  content: "\f10d";
}
.fa-quote-right:before {
  content: "\f10e";
}
.fa-spinner:before {
  content: "\f110";
}
.fa-circle:before {
  content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
  content: "\f112";
}
.fa-github-alt:before {
  content: "\f113";
}
.fa-folder-o:before {
  content: "\f114";
}
.fa-folder-open-o:before {
  content: "\f115";
}
.fa-smile-o:before {
  content: "\f118";
}
.fa-frown-o:before {
  content: "\f119";
}
.fa-meh-o:before {
  content: "\f11a";
}
.fa-gamepad:before {
  content: "\f11b";
}
.fa-keyboard-o:before {
  content: "\f11c";
}
.fa-flag-o:before {
  content: "\f11d";
}
.fa-flag-checkered:before {
  content: "\f11e";
}
.fa-terminal:before {
  content: "\f120";
}
.fa-code:before {
  content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "\f123";
}
.fa-location-arrow:before {
  content: "\f124";
}
.fa-crop:before {
  content: "\f125";
}
.fa-code-fork:before {
  content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: "\f127";
}
.fa-question:before {
  content: "\f128";
}
.fa-info:before {
  content: "\f129";
}
.fa-exclamation:before {
  content: "\f12a";
}
.fa-superscript:before {
  content: "\f12b";
}
.fa-subscript:before {
  content: "\f12c";
}
.fa-eraser:before {
  content: "\f12d";
}
.fa-puzzle-piece:before {
  content: "\f12e";
}
.fa-microphone:before {
  content: "\f130";
}
.fa-microphone-slash:before {
  content: "\f131";
}
.fa-shield:before {
  content: "\f132";
}
.fa-calendar-o:before {
  content: "\f133";
}
.fa-fire-extinguisher:before {
  content: "\f134";
}
.fa-rocket:before {
  content: "\f135";
}
.fa-maxcdn:before {
  content: "\f136";
}
.fa-chevron-circle-left:before {
  content: "\f137";
}
.fa-chevron-circle-right:before {
  content: "\f138";
}
.fa-chevron-circle-up:before {
  content: "\f139";
}
.fa-chevron-circle-down:before {
  content: "\f13a";
}
.fa-html5:before {
  content: "\f13b";
}
.fa-css3:before {
  content: "\f13c";
}
.fa-anchor:before {
  content: "\f13d";
}
.fa-unlock-alt:before {
  content: "\f13e";
}
.fa-bullseye:before {
  content: "\f140";
}
.fa-ellipsis-h:before {
  content: "\f141";
}
.fa-ellipsis-v:before {
  content: "\f142";
}
.fa-rss-square:before {
  content: "\f143";
}
.fa-play-circle:before {
  content: "\f144";
}
.fa-ticket:before {
  content: "\f145";
}
.fa-minus-square:before {
  content: "\f146";
}
.fa-minus-square-o:before {
  content: "\f147";
}
.fa-level-up:before {
  content: "\f148";
}
.fa-level-down:before {
  content: "\f149";
}
.fa-check-square:before {
  content: "\f14a";
}
.fa-pencil-square:before {
  content: "\f14b";
}
.fa-external-link-square:before {
  content: "\f14c";
}
.fa-share-square:before {
  content: "\f14d";
}
.fa-compass:before {
  content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
  content: "\f153";
}
.fa-gbp:before {
  content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
  content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
  content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "\f158";
}
.fa-won:before,
.fa-krw:before {
  content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
  content: "\f15a";
}
.fa-file:before {
  content: "\f15b";
}
.fa-file-text:before {
  content: "\f15c";
}
.fa-sort-alpha-asc:before {
  content: "\f15d";
}
.fa-sort-alpha-desc:before {
  content: "\f15e";
}
.fa-sort-amount-asc:before {
  content: "\f160";
}
.fa-sort-amount-desc:before {
  content: "\f161";
}
.fa-sort-numeric-asc:before {
  content: "\f162";
}
.fa-sort-numeric-desc:before {
  content: "\f163";
}
.fa-thumbs-up:before {
  content: "\f164";
}
.fa-thumbs-down:before {
  content: "\f165";
}
.fa-youtube-square:before {
  content: "\f166";
}
.fa-youtube:before {
  content: "\f167";
}
.fa-xing:before {
  content: "\f168";
}
.fa-xing-square:before {
  content: "\f169";
}
.fa-youtube-play:before {
  content: "\f16a";
}
.fa-dropbox:before {
  content: "\f16b";
}
.fa-stack-overflow:before {
  content: "\f16c";
}
.fa-instagram:before {
  content: "\f16d";
}
.fa-flickr:before {
  content: "\f16e";
}
.fa-adn:before {
  content: "\f170";
}
.fa-bitbucket:before {
  content: "\f171";
}
.fa-bitbucket-square:before {
  content: "\f172";
}
.fa-tumblr:before {
  content: "\f173";
}
.fa-tumblr-square:before {
  content: "\f174";
}
.fa-long-arrow-down:before {
  content: "\f175";
}
.fa-long-arrow-up:before {
  content: "\f176";
}
.fa-long-arrow-left:before {
  content: "\f177";
}
.fa-long-arrow-right:before {
  content: "\f178";
}
.fa-apple:before {
  content: "\f179";
}
.fa-windows:before {
  content: "\f17a";
}
.fa-android:before {
  content: "\f17b";
}
.fa-linux:before {
  content: "\f17c";
}
.fa-dribbble:before {
  content: "\f17d";
}
.fa-skype:before {
  content: "\f17e";
}
.fa-foursquare:before {
  content: "\f180";
}
.fa-trello:before {
  content: "\f181";
}
.fa-female:before {
  content: "\f182";
}
.fa-male:before {
  content: "\f183";
}
.fa-gittip:before {
  content: "\f184";
}
.fa-sun-o:before {
  content: "\f185";
}
.fa-moon-o:before {
  content: "\f186";
}
.fa-archive:before {
  content: "\f187";
}
.fa-bug:before {
  content: "\f188";
}
.fa-vk:before {
  content: "\f189";
}
.fa-weibo:before {
  content: "\f18a";
}
.fa-renren:before {
  content: "\f18b";
}
.fa-pagelines:before {
  content: "\f18c";
}
.fa-stack-exchange:before {
  content: "\f18d";
}
.fa-arrow-circle-o-right:before {
  content: "\f18e";
}
.fa-arrow-circle-o-left:before {
  content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "\f191";
}
.fa-dot-circle-o:before {
  content: "\f192";
}
.fa-wheelchair:before {
  content: "\f193";
}
.fa-vimeo-square:before {
  content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
  content: "\f195";
}
.fa-plus-square-o:before {
  content: "\f196";
}
.fa-space-shuttle:before {
  content: "\f197";
}
.fa-slack:before {
  content: "\f198";
}
.fa-envelope-square:before {
  content: "\f199";
}
.fa-wordpress:before {
  content: "\f19a";
}
.fa-openid:before {
  content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "\f19d";
}
.fa-yahoo:before {
  content: "\f19e";
}
.fa-google:before {
  content: "\f1a0";
}
.fa-reddit:before {
  content: "\f1a1";
}
.fa-reddit-square:before {
  content: "\f1a2";
}
.fa-stumbleupon-circle:before {
  content: "\f1a3";
}
.fa-stumbleupon:before {
  content: "\f1a4";
}
.fa-delicious:before {
  content: "\f1a5";
}
.fa-digg:before {
  content: "\f1a6";
}
.fa-pied-piper:before {
  content: "\f1a7";
}
.fa-pied-piper-alt:before {
  content: "\f1a8";
}
.fa-drupal:before {
  content: "\f1a9";
}
.fa-joomla:before {
  content: "\f1aa";
}
.fa-language:before {
  content: "\f1ab";
}
.fa-fax:before {
  content: "\f1ac";
}
.fa-building:before {
  content: "\f1ad";
}
.fa-child:before {
  content: "\f1ae";
}
.fa-paw:before {
  content: "\f1b0";
}
.fa-spoon:before {
  content: "\f1b1";
}
.fa-cube:before {
  content: "\f1b2";
}
.fa-cubes:before {
  content: "\f1b3";
}
.fa-behance:before {
  content: "\f1b4";
}
.fa-behance-square:before {
  content: "\f1b5";
}
.fa-steam:before {
  content: "\f1b6";
}
.fa-steam-square:before {
  content: "\f1b7";
}
.fa-recycle:before {
  content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
  content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
  content: "\f1ba";
}
.fa-tree:before {
  content: "\f1bb";
}
.fa-spotify:before {
  content: "\f1bc";
}
.fa-deviantart:before {
  content: "\f1bd";
}
.fa-soundcloud:before {
  content: "\f1be";
}
.fa-database:before {
  content: "\f1c0";
}
.fa-file-pdf-o:before {
  content: "\f1c1";
}
.fa-file-word-o:before {
  content: "\f1c2";
}
.fa-file-excel-o:before {
  content: "\f1c3";
}
.fa-file-powerpoint-o:before {
  content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "\f1c8";
}
.fa-file-code-o:before {
  content: "\f1c9";
}
.fa-vine:before {
  content: "\f1ca";
}
.fa-codepen:before {
  content: "\f1cb";
}
.fa-jsfiddle:before {
  content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "\f1cd";
}
.fa-circle-o-notch:before {
  content: "\f1ce";
}
.fa-ra:before,
.fa-rebel:before {
  content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
  content: "\f1d1";
}
.fa-git-square:before {
  content: "\f1d2";
}
.fa-git:before {
  content: "\f1d3";
}
.fa-hacker-news:before {
  content: "\f1d4";
}
.fa-tencent-weibo:before {
  content: "\f1d5";
}
.fa-qq:before {
  content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
  content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
  content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "\f1d9";
}
.fa-history:before {
  content: "\f1da";
}
.fa-circle-thin:before {
  content: "\f1db";
}
.fa-header:before {
  content: "\f1dc";
}
.fa-paragraph:before {
  content: "\f1dd";
}
.fa-sliders:before {
  content: "\f1de";
}
.fa-share-alt:before {
  content: "\f1e0";
}
.fa-share-alt-square:before {
  content: "\f1e1";
}
.fa-bomb:before {
  content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "\f1e3";
}
.fa-tty:before {
  content: "\f1e4";
}
.fa-binoculars:before {
  content: "\f1e5";
}
.fa-plug:before {
  content: "\f1e6";
}
.fa-slideshare:before {
  content: "\f1e7";
}
.fa-twitch:before {
  content: "\f1e8";
}
.fa-yelp:before {
  content: "\f1e9";
}
.fa-newspaper-o:before {
  content: "\f1ea";
}
.fa-wifi:before {
  content: "\f1eb";
}
.fa-calculator:before {
  content: "\f1ec";
}
.fa-paypal:before {
  content: "\f1ed";
}
.fa-google-wallet:before {
  content: "\f1ee";
}
.fa-cc-visa:before {
  content: "\f1f0";
}
.fa-cc-mastercard:before {
  content: "\f1f1";
}
.fa-cc-discover:before {
  content: "\f1f2";
}
.fa-cc-amex:before {
  content: "\f1f3";
}
.fa-cc-paypal:before {
  content: "\f1f4";
}
.fa-cc-stripe:before {
  content: "\f1f5";
}
.fa-bell-slash:before {
  content: "\f1f6";
}
.fa-bell-slash-o:before {
  content: "\f1f7";
}
.fa-trash:before {
  content: "\f1f8";
}
.fa-copyright:before {
  content: "\f1f9";
}
.fa-at:before {
  content: "\f1fa";
}
.fa-eyedropper:before {
  content: "\f1fb";
}
.fa-paint-brush:before {
  content: "\f1fc";
}
.fa-birthday-cake:before {
  content: "\f1fd";
}
.fa-area-chart:before {
  content: "\f1fe";
}
.fa-pie-chart:before {
  content: "\f200";
}
.fa-line-chart:before {
  content: "\f201";
}
.fa-lastfm:before {
  content: "\f202";
}
.fa-lastfm-square:before {
  content: "\f203";
}
.fa-toggle-off:before {
  content: "\f204";
}
.fa-toggle-on:before {
  content: "\f205";
}
.fa-bicycle:before {
  content: "\f206";
}
.fa-bus:before {
  content: "\f207";
}
.fa-ioxhost:before {
  content: "\f208";
}
.fa-angellist:before {
  content: "\f209";
}
.fa-cc:before {
  content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "\f20b";
}
.fa-meanpath:before {
  content: "\f20c";
}
/*!
*
* IPython base
*
*/
.modal.fade .modal-dialog {
  -webkit-transform: translate(0, 0);
  -ms-transform: translate(0, 0);
  -o-transform: translate(0, 0);
  transform: translate(0, 0);
}
code {
  color: #000;
}
pre {
  font-size: inherit;
  line-height: inherit;
}
label {
  font-weight: normal;
}
/* Make the page background atleast 100% the height of the view port */
/* Make the page itself atleast 70% the height of the view port */
.border-box-sizing {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.corner-all {
  border-radius: 2px;
}
.no-padding {
  padding: 0px;
}
/* Flexible box model classes */
/* Taken from Alex Russell http://infrequently.org/2009/08/css-3-progress/ */
/* This file is a compatability layer.  It allows the usage of flexible box 
model layouts accross multiple browsers, including older browsers.  The newest,
universal implementation of the flexible box model is used when available (see
`Modern browsers` comments below).  Browsers that are known to implement this 
new spec completely include:

    Firefox 28.0+
    Chrome 29.0+
    Internet Explorer 11+ 
    Opera 17.0+

Browsers not listed, including Safari, are supported via the styling under the
`Old browsers` comments below.
*/
.hbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
.hbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.vbox {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
.vbox > * {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
}
.hbox.reverse,
.vbox.reverse,
.reverse {
  /* Old browsers */
  -webkit-box-direction: reverse;
  -moz-box-direction: reverse;
  box-direction: reverse;
  /* Modern browsers */
  flex-direction: row-reverse;
}
.hbox.box-flex0,
.vbox.box-flex0,
.box-flex0 {
  /* Old browsers */
  -webkit-box-flex: 0;
  -moz-box-flex: 0;
  box-flex: 0;
  /* Modern browsers */
  flex: none;
  width: auto;
}
.hbox.box-flex1,
.vbox.box-flex1,
.box-flex1 {
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex,
.vbox.box-flex,
.box-flex {
  /* Old browsers */
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
.hbox.box-flex2,
.vbox.box-flex2,
.box-flex2 {
  /* Old browsers */
  -webkit-box-flex: 2;
  -moz-box-flex: 2;
  box-flex: 2;
  /* Modern browsers */
  flex: 2;
}
.box-group1 {
  /*  Deprecated */
  -webkit-box-flex-group: 1;
  -moz-box-flex-group: 1;
  box-flex-group: 1;
}
.box-group2 {
  /* Deprecated */
  -webkit-box-flex-group: 2;
  -moz-box-flex-group: 2;
  box-flex-group: 2;
}
.hbox.start,
.vbox.start,
.start {
  /* Old browsers */
  -webkit-box-pack: start;
  -moz-box-pack: start;
  box-pack: start;
  /* Modern browsers */
  justify-content: flex-start;
}
.hbox.end,
.vbox.end,
.end {
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
}
.hbox.center,
.vbox.center,
.center {
  /* Old browsers */
  -webkit-box-pack: center;
  -moz-box-pack: center;
  box-pack: center;
  /* Modern browsers */
  justify-content: center;
}
.hbox.baseline,
.vbox.baseline,
.baseline {
  /* Old browsers */
  -webkit-box-pack: baseline;
  -moz-box-pack: baseline;
  box-pack: baseline;
  /* Modern browsers */
  justify-content: baseline;
}
.hbox.stretch,
.vbox.stretch,
.stretch {
  /* Old browsers */
  -webkit-box-pack: stretch;
  -moz-box-pack: stretch;
  box-pack: stretch;
  /* Modern browsers */
  justify-content: stretch;
}
.hbox.align-start,
.vbox.align-start,
.align-start {
  /* Old browsers */
  -webkit-box-align: start;
  -moz-box-align: start;
  box-align: start;
  /* Modern browsers */
  align-items: flex-start;
}
.hbox.align-end,
.vbox.align-end,
.align-end {
  /* Old browsers */
  -webkit-box-align: end;
  -moz-box-align: end;
  box-align: end;
  /* Modern browsers */
  align-items: flex-end;
}
.hbox.align-center,
.vbox.align-center,
.align-center {
  /* Old browsers */
  -webkit-box-align: center;
  -moz-box-align: center;
  box-align: center;
  /* Modern browsers */
  align-items: center;
}
.hbox.align-baseline,
.vbox.align-baseline,
.align-baseline {
  /* Old browsers */
  -webkit-box-align: baseline;
  -moz-box-align: baseline;
  box-align: baseline;
  /* Modern browsers */
  align-items: baseline;
}
.hbox.align-stretch,
.vbox.align-stretch,
.align-stretch {
  /* Old browsers */
  -webkit-box-align: stretch;
  -moz-box-align: stretch;
  box-align: stretch;
  /* Modern browsers */
  align-items: stretch;
}
div.error {
  margin: 2em;
  text-align: center;
}
div.error > h1 {
  font-size: 500%;
  line-height: normal;
}
div.error > p {
  font-size: 200%;
  line-height: normal;
}
div.traceback-wrapper {
  text-align: left;
  max-width: 800px;
  margin: auto;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
body {
  background-color: #fff;
  /* This makes sure that the body covers the entire window and needs to
       be in a different element than the display: box in wrapper below */
  position: absolute;
  left: 0px;
  right: 0px;
  top: 0px;
  bottom: 0px;
  overflow: visible;
}
body > #header {
  /* Initially hidden to prevent FLOUC */
  display: none;
  background-color: #fff;
  /* Display over codemirror */
  position: relative;
  z-index: 100;
}
body > #header #header-container {
  padding-bottom: 5px;
  padding-top: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
body > #header .header-bar {
  width: 100%;
  height: 1px;
  background: #e7e7e7;
  margin-bottom: -1px;
}
@media print {
  body > #header {
    display: none !important;
  }
}
#header-spacer {
  width: 100%;
  visibility: hidden;
}
@media print {
  #header-spacer {
    display: none;
  }
}
#ipython_notebook {
  padding-left: 0px;
  padding-top: 1px;
  padding-bottom: 1px;
}
@media (max-width: 991px) {
  #ipython_notebook {
    margin-left: 10px;
  }
}
#noscript {
  width: auto;
  padding-top: 16px;
  padding-bottom: 16px;
  text-align: center;
  font-size: 22px;
  color: red;
  font-weight: bold;
}
#ipython_notebook img {
  height: 28px;
}
#site {
  width: 100%;
  display: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  overflow: auto;
}
@media print {
  #site {
    height: auto !important;
  }
}
/* Smaller buttons */
.ui-button .ui-button-text {
  padding: 0.2em 0.8em;
  font-size: 77%;
}
input.ui-button {
  padding: 0.3em 0.9em;
}
span#login_widget {
  float: right;
}
span#login_widget > .button,
#logout {
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button:focus,
#logout:focus,
span#login_widget > .button.focus,
#logout.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
span#login_widget > .button:hover,
#logout:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
span#login_widget > .button:active:hover,
#logout:active:hover,
span#login_widget > .button.active:hover,
#logout.active:hover,
.open > .dropdown-togglespan#login_widget > .button:hover,
.open > .dropdown-toggle#logout:hover,
span#login_widget > .button:active:focus,
#logout:active:focus,
span#login_widget > .button.active:focus,
#logout.active:focus,
.open > .dropdown-togglespan#login_widget > .button:focus,
.open > .dropdown-toggle#logout:focus,
span#login_widget > .button:active.focus,
#logout:active.focus,
span#login_widget > .button.active.focus,
#logout.active.focus,
.open > .dropdown-togglespan#login_widget > .button.focus,
.open > .dropdown-toggle#logout.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
span#login_widget > .button:active,
#logout:active,
span#login_widget > .button.active,
#logout.active,
.open > .dropdown-togglespan#login_widget > .button,
.open > .dropdown-toggle#logout {
  background-image: none;
}
span#login_widget > .button.disabled:hover,
#logout.disabled:hover,
span#login_widget > .button[disabled]:hover,
#logout[disabled]:hover,
fieldset[disabled] span#login_widget > .button:hover,
fieldset[disabled] #logout:hover,
span#login_widget > .button.disabled:focus,
#logout.disabled:focus,
span#login_widget > .button[disabled]:focus,
#logout[disabled]:focus,
fieldset[disabled] span#login_widget > .button:focus,
fieldset[disabled] #logout:focus,
span#login_widget > .button.disabled.focus,
#logout.disabled.focus,
span#login_widget > .button[disabled].focus,
#logout[disabled].focus,
fieldset[disabled] span#login_widget > .button.focus,
fieldset[disabled] #logout.focus {
  background-color: #fff;
  border-color: #ccc;
}
span#login_widget > .button .badge,
#logout .badge {
  color: #fff;
  background-color: #333;
}
.nav-header {
  text-transform: none;
}
#header > span {
  margin-top: 10px;
}
.modal_stretch .modal-dialog {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  min-height: 80vh;
}
.modal_stretch .modal-dialog .modal-body {
  max-height: calc(100vh - 200px);
  overflow: auto;
  flex: 1;
}
@media (min-width: 768px) {
  .modal .modal-dialog {
    width: 700px;
  }
}
@media (min-width: 768px) {
  select.form-control {
    margin-left: 12px;
    margin-right: 12px;
  }
}
/*!
*
* IPython auth
*
*/
.center-nav {
  display: inline-block;
  margin-bottom: -4px;
}
/*!
*
* IPython tree view
*
*/
/* We need an invisible input field on top of the sentense*/
/* "Drag file onto the list ..." */
.alternate_upload {
  background-color: none;
  display: inline;
}
.alternate_upload.form {
  padding: 0;
  margin: 0;
}
.alternate_upload input.fileinput {
  text-align: center;
  vertical-align: middle;
  display: inline;
  opacity: 0;
  z-index: 2;
  width: 12ex;
  margin-right: -12ex;
}
.alternate_upload .btn-upload {
  height: 22px;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
ul#tabs {
  margin-bottom: 4px;
}
ul#tabs a {
  padding-top: 6px;
  padding-bottom: 4px;
}
ul.breadcrumb a:focus,
ul.breadcrumb a:hover {
  text-decoration: none;
}
ul.breadcrumb i.icon-home {
  font-size: 16px;
  margin-right: 4px;
}
ul.breadcrumb span {
  color: #5e5e5e;
}
.list_toolbar {
  padding: 4px 0 4px 0;
  vertical-align: middle;
}
.list_toolbar .tree-buttons {
  padding-top: 1px;
}
.dynamic-buttons {
  padding-top: 3px;
  display: inline-block;
}
.list_toolbar [class*="span"] {
  min-height: 24px;
}
.list_header {
  font-weight: bold;
  background-color: #EEE;
}
.list_placeholder {
  font-weight: bold;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
}
.list_container {
  margin-top: 4px;
  margin-bottom: 20px;
  border: 1px solid #ddd;
  border-radius: 2px;
}
.list_container > div {
  border-bottom: 1px solid #ddd;
}
.list_container > div:hover .list-item {
  background-color: red;
}
.list_container > div:last-child {
  border: none;
}
.list_item:hover .list_item {
  background-color: #ddd;
}
.list_item a {
  text-decoration: none;
}
.list_item:hover {
  background-color: #fafafa;
}
.list_header > div,
.list_item > div {
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
.list_header > div input,
.list_item > div input {
  margin-right: 7px;
  margin-left: 14px;
  vertical-align: baseline;
  line-height: 22px;
  position: relative;
  top: -1px;
}
.list_header > div .item_link,
.list_item > div .item_link {
  margin-left: -1px;
  vertical-align: baseline;
  line-height: 22px;
}
.new-file input[type=checkbox] {
  visibility: hidden;
}
.item_name {
  line-height: 22px;
  height: 24px;
}
.item_icon {
  font-size: 14px;
  color: #5e5e5e;
  margin-right: 7px;
  margin-left: 7px;
  line-height: 22px;
  vertical-align: baseline;
}
.item_buttons {
  line-height: 1em;
  margin-left: -5px;
}
.item_buttons .btn,
.item_buttons .btn-group,
.item_buttons .input-group {
  float: left;
}
.item_buttons > .btn,
.item_buttons > .btn-group,
.item_buttons > .input-group {
  margin-left: 5px;
}
.item_buttons .btn {
  min-width: 13ex;
}
.item_buttons .running-indicator {
  padding-top: 4px;
  color: #5cb85c;
}
.item_buttons .kernel-name {
  padding-top: 4px;
  color: #5bc0de;
  margin-right: 7px;
  float: left;
}
.toolbar_info {
  height: 24px;
  line-height: 24px;
}
.list_item input:not([type=checkbox]) {
  padding-top: 3px;
  padding-bottom: 3px;
  height: 22px;
  line-height: 14px;
  margin: 0px;
}
.highlight_text {
  color: blue;
}
#project_name {
  display: inline-block;
  padding-left: 7px;
  margin-left: -2px;
}
#project_name > .breadcrumb {
  padding: 0px;
  margin-bottom: 0px;
  background-color: transparent;
  font-weight: bold;
}
#tree-selector {
  padding-right: 0px;
}
#button-select-all {
  min-width: 50px;
}
#select-all {
  margin-left: 7px;
  margin-right: 2px;
}
.menu_icon {
  margin-right: 2px;
}
.tab-content .row {
  margin-left: 0px;
  margin-right: 0px;
}
.folder_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f114";
}
.folder_icon:before.pull-left {
  margin-right: .3em;
}
.folder_icon:before.pull-right {
  margin-left: .3em;
}
.notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
}
.notebook_icon:before.pull-left {
  margin-right: .3em;
}
.notebook_icon:before.pull-right {
  margin-left: .3em;
}
.running_notebook_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f02d";
  position: relative;
  top: -1px;
  color: #5cb85c;
}
.running_notebook_icon:before.pull-left {
  margin-right: .3em;
}
.running_notebook_icon:before.pull-right {
  margin-left: .3em;
}
.file_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f016";
  position: relative;
  top: -2px;
}
.file_icon:before.pull-left {
  margin-right: .3em;
}
.file_icon:before.pull-right {
  margin-left: .3em;
}
#notebook_toolbar .pull-right {
  padding-top: 0px;
  margin-right: -1px;
}
ul#new-menu {
  left: auto;
  right: 0;
}
.kernel-menu-icon {
  padding-right: 12px;
  width: 24px;
  content: "\f096";
}
.kernel-menu-icon:before {
  content: "\f096";
}
.kernel-menu-icon-current:before {
  content: "\f00c";
}
#tab_content {
  padding-top: 20px;
}
#running .panel-group .panel {
  margin-top: 3px;
  margin-bottom: 1em;
}
#running .panel-group .panel .panel-heading {
  background-color: #EEE;
  padding-top: 4px;
  padding-bottom: 4px;
  padding-left: 7px;
  padding-right: 7px;
  line-height: 22px;
}
#running .panel-group .panel .panel-heading a:focus,
#running .panel-group .panel .panel-heading a:hover {
  text-decoration: none;
}
#running .panel-group .panel .panel-body {
  padding: 0px;
}
#running .panel-group .panel .panel-body .list_container {
  margin-top: 0px;
  margin-bottom: 0px;
  border: 0px;
  border-radius: 0px;
}
#running .panel-group .panel .panel-body .list_container .list_item {
  border-bottom: 1px solid #ddd;
}
#running .panel-group .panel .panel-body .list_container .list_item:last-child {
  border-bottom: 0px;
}
.delete-button {
  display: none;
}
.duplicate-button {
  display: none;
}
.rename-button {
  display: none;
}
.shutdown-button {
  display: none;
}
.dynamic-instructions {
  display: inline-block;
  padding-top: 4px;
}
/*!
*
* IPython text editor webapp
*
*/
.selected-keymap i.fa {
  padding: 0px 5px;
}
.selected-keymap i.fa:before {
  content: "\f00c";
}
#mode-menu {
  overflow: auto;
  max-height: 20em;
}
.edit_app #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.edit_app #menubar .navbar {
  /* Use a negative 1 bottom margin, so the border overlaps the border of the
    header */
  margin-bottom: -1px;
}
.dirty-indicator {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator.pull-left {
  margin-right: .3em;
}
.dirty-indicator.pull-right {
  margin-left: .3em;
}
.dirty-indicator-dirty {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-dirty.pull-left {
  margin-right: .3em;
}
.dirty-indicator-dirty.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  width: 20px;
}
.dirty-indicator-clean.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean.pull-right {
  margin-left: .3em;
}
.dirty-indicator-clean:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f00c";
}
.dirty-indicator-clean:before.pull-left {
  margin-right: .3em;
}
.dirty-indicator-clean:before.pull-right {
  margin-left: .3em;
}
#filename {
  font-size: 16pt;
  display: table;
  padding: 0px 5px;
}
#current-mode {
  padding-left: 5px;
  padding-right: 5px;
}
#texteditor-backdrop {
  padding-top: 20px;
  padding-bottom: 20px;
}
@media not print {
  #texteditor-backdrop {
    background-color: #EEE;
  }
}
@media print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container .CodeMirror-gutter,
  #texteditor-backdrop #texteditor-container .CodeMirror-gutters {
    background-color: #fff;
  }
}
@media not print {
  #texteditor-backdrop #texteditor-container {
    padding: 0px;
    background-color: #fff;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
/*!
*
* IPython notebook
*
*/
/* CSS font colors for translated ANSI colors. */
.ansibold {
  font-weight: bold;
}
/* use dark versions for foreground, to improve visibility */
.ansiblack {
  color: black;
}
.ansired {
  color: darkred;
}
.ansigreen {
  color: darkgreen;
}
.ansiyellow {
  color: #c4a000;
}
.ansiblue {
  color: darkblue;
}
.ansipurple {
  color: darkviolet;
}
.ansicyan {
  color: steelblue;
}
.ansigray {
  color: gray;
}
/* and light for background, for the same reason */
.ansibgblack {
  background-color: black;
}
.ansibgred {
  background-color: red;
}
.ansibggreen {
  background-color: green;
}
.ansibgyellow {
  background-color: yellow;
}
.ansibgblue {
  background-color: blue;
}
.ansibgpurple {
  background-color: magenta;
}
.ansibgcyan {
  background-color: cyan;
}
.ansibggray {
  background-color: gray;
}
div.cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  border-radius: 2px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  border-width: 1px;
  border-style: solid;
  border-color: transparent;
  width: 100%;
  padding: 5px;
  /* This acts as a spacer between cells, that is outside the border */
  margin: 0px;
  outline: none;
  border-left-width: 1px;
  padding-left: 5px;
  background: linear-gradient(to right, transparent -40px, transparent 1px, transparent 1px, transparent 100%);
}
div.cell.jupyter-soft-selected {
  border-left-color: #90CAF9;
  border-left-color: #E3F2FD;
  border-left-width: 1px;
  padding-left: 5px;
  border-right-color: #E3F2FD;
  border-right-width: 1px;
  background: #E3F2FD;
}
@media print {
  div.cell.jupyter-soft-selected {
    border-color: transparent;
  }
}
div.cell.selected {
  border-color: #ababab;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 5px, transparent 5px, transparent 100%);
}
@media print {
  div.cell.selected {
    border-color: transparent;
  }
}
div.cell.selected.jupyter-soft-selected {
  border-left-width: 0;
  padding-left: 6px;
  background: linear-gradient(to right, #42A5F5 -40px, #42A5F5 7px, #E3F2FD 7px, #E3F2FD 100%);
}
.edit_mode div.cell.selected {
  border-color: #66BB6A;
  border-left-width: 0px;
  padding-left: 6px;
  background: linear-gradient(to right, #66BB6A -40px, #66BB6A 5px, transparent 5px, transparent 100%);
}
@media print {
  .edit_mode div.cell.selected {
    border-color: transparent;
  }
}
.prompt {
  /* This needs to be wide enough for 3 digit prompt numbers: In[100]: */
  min-width: 14ex;
  /* This padding is tuned to match the padding on the CodeMirror editor. */
  padding: 0.4em;
  margin: 0px;
  font-family: monospace;
  text-align: right;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
  /* Don't highlight prompt number selection */
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  -khtml-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
  /* Use default cursor */
  cursor: default;
}
@media (max-width: 540px) {
  .prompt {
    text-align: left;
  }
}
div.inner_cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
@-moz-document url-prefix() {
  div.inner_cell {
    overflow-x: hidden;
  }
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_area {
  border: 1px solid #cfcfcf;
  border-radius: 2px;
  background: #f7f7f7;
  line-height: 1.21429em;
}
/* This is needed so that empty prompt areas can collapse to zero height when there
   is no content in the output_subarea and the prompt. The main purpose of this is
   to make sure that empty JavaScript output_subareas have no height. */
div.prompt:empty {
  padding-top: 0;
  padding-bottom: 0;
}
div.unrecognized_cell {
  padding: 5px 5px 5px 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.unrecognized_cell .inner_cell {
  border-radius: 2px;
  padding: 5px;
  font-weight: bold;
  color: red;
  border: 1px solid #cfcfcf;
  background: #eaeaea;
}
div.unrecognized_cell .inner_cell a {
  color: inherit;
  text-decoration: none;
}
div.unrecognized_cell .inner_cell a:hover {
  color: inherit;
  text-decoration: none;
}
@media (max-width: 540px) {
  div.unrecognized_cell > div.prompt {
    display: none;
  }
}
div.code_cell {
  /* avoid page breaking on code cells when printing */
}
@media print {
  div.code_cell {
    page-break-inside: avoid;
  }
}
/* any special styling for code cells that are currently running goes here */
div.input {
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.input {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
/* input_area and input_prompt must match in top border and margin for alignment */
div.input_prompt {
  color: #303F9F;
  border-top: 1px solid transparent;
}
div.input_area > div.highlight {
  margin: 0.4em;
  border: none;
  padding: 0px;
  background-color: transparent;
}
div.input_area > div.highlight > pre {
  margin: 0px;
  border: none;
  padding: 0px;
  background-color: transparent;
}
/* The following gets added to the <head> if it is detected that the user has a
 * monospace font with inconsistent normal/bold/italic height.  See
 * notebookmain.js.  Such fonts will have keywords vertically offset with
 * respect to the rest of the text.  The user should select a better font.
 * See: https://github.com/ipython/ipython/issues/1503
 *
 * .CodeMirror span {
 *      vertical-align: bottom;
 * }
 */
.CodeMirror {
  line-height: 1.21429em;
  /* Changed from 1em to our global default */
  font-size: 14px;
  height: auto;
  /* Changed to auto to autogrow */
  background: none;
  /* Changed from white to allow our bg to show through */
}
.CodeMirror-scroll {
  /*  The CodeMirror docs are a bit fuzzy on if overflow-y should be hidden or visible.*/
  /*  We have found that if it is visible, vertical scrollbars appear with font size changes.*/
  overflow-y: hidden;
  overflow-x: auto;
}
.CodeMirror-lines {
  /* In CM2, this used to be 0.4em, but in CM3 it went to 4px. We need the em value because */
  /* we have set a different line-height and want this to scale with that. */
  padding: 0.4em;
}
.CodeMirror-linenumber {
  padding: 0 8px 0 4px;
}
.CodeMirror-gutters {
  border-bottom-left-radius: 2px;
  border-top-left-radius: 2px;
}
.CodeMirror pre {
  /* In CM3 this went to 4px from 0 in CM2. We need the 0 value because of how we size */
  /* .CodeMirror-lines */
  padding: 0;
  border: 0;
  border-radius: 0;
}
/*

Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
Adapted from GitHub theme

*/
.highlight-base {
  color: #000;
}
.highlight-variable {
  color: #000;
}
.highlight-variable-2 {
  color: #1a1a1a;
}
.highlight-variable-3 {
  color: #333333;
}
.highlight-string {
  color: #BA2121;
}
.highlight-comment {
  color: #408080;
  font-style: italic;
}
.highlight-number {
  color: #080;
}
.highlight-atom {
  color: #88F;
}
.highlight-keyword {
  color: #008000;
  font-weight: bold;
}
.highlight-builtin {
  color: #008000;
}
.highlight-error {
  color: #f00;
}
.highlight-operator {
  color: #AA22FF;
  font-weight: bold;
}
.highlight-meta {
  color: #AA22FF;
}
/* previously not defined, copying from default codemirror */
.highlight-def {
  color: #00f;
}
.highlight-string-2 {
  color: #f50;
}
.highlight-qualifier {
  color: #555;
}
.highlight-bracket {
  color: #997;
}
.highlight-tag {
  color: #170;
}
.highlight-attribute {
  color: #00c;
}
.highlight-header {
  color: blue;
}
.highlight-quote {
  color: #090;
}
.highlight-link {
  color: #00c;
}
/* apply the same style to codemirror */
.cm-s-ipython span.cm-keyword {
  color: #008000;
  font-weight: bold;
}
.cm-s-ipython span.cm-atom {
  color: #88F;
}
.cm-s-ipython span.cm-number {
  color: #080;
}
.cm-s-ipython span.cm-def {
  color: #00f;
}
.cm-s-ipython span.cm-variable {
  color: #000;
}
.cm-s-ipython span.cm-operator {
  color: #AA22FF;
  font-weight: bold;
}
.cm-s-ipython span.cm-variable-2 {
  color: #1a1a1a;
}
.cm-s-ipython span.cm-variable-3 {
  color: #333333;
}
.cm-s-ipython span.cm-comment {
  color: #408080;
  font-style: italic;
}
.cm-s-ipython span.cm-string {
  color: #BA2121;
}
.cm-s-ipython span.cm-string-2 {
  color: #f50;
}
.cm-s-ipython span.cm-meta {
  color: #AA22FF;
}
.cm-s-ipython span.cm-qualifier {
  color: #555;
}
.cm-s-ipython span.cm-builtin {
  color: #008000;
}
.cm-s-ipython span.cm-bracket {
  color: #997;
}
.cm-s-ipython span.cm-tag {
  color: #170;
}
.cm-s-ipython span.cm-attribute {
  color: #00c;
}
.cm-s-ipython span.cm-header {
  color: blue;
}
.cm-s-ipython span.cm-quote {
  color: #090;
}
.cm-s-ipython span.cm-link {
  color: #00c;
}
.cm-s-ipython span.cm-error {
  color: #f00;
}
.cm-s-ipython span.cm-tab {
  background: url();
  background-position: right;
  background-repeat: no-repeat;
}
div.output_wrapper {
  /* this position must be relative to enable descendents to be absolute within it */
  position: relative;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
  z-index: 1;
}
/* class for the output area when it should be height-limited */
div.output_scroll {
  /* ideally, this would be max-height, but FF barfs all over that */
  height: 24em;
  /* FF needs this *and the wrapper* to specify full width, or it will shrinkwrap */
  width: 100%;
  overflow: auto;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  box-shadow: inset 0 2px 8px rgba(0, 0, 0, 0.8);
  display: block;
}
/* output div while it is collapsed */
div.output_collapsed {
  margin: 0px;
  padding: 0px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
div.out_prompt_overlay {
  height: 100%;
  padding: 0px 0.4em;
  position: absolute;
  border-radius: 2px;
}
div.out_prompt_overlay:hover {
  /* use inner shadow to get border that is computed the same on WebKit/FF */
  -webkit-box-shadow: inset 0 0 1px #000;
  box-shadow: inset 0 0 1px #000;
  background: rgba(240, 240, 240, 0.5);
}
div.output_prompt {
  color: #D84315;
}
/* This class is the outer container of all output sections. */
div.output_area {
  padding: 0px;
  page-break-inside: avoid;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
div.output_area .MathJax_Display {
  text-align: left !important;
}
div.output_area .rendered_html table {
  margin-left: 0;
  margin-right: 0;
}
div.output_area .rendered_html img {
  margin-left: 0;
  margin-right: 0;
}
div.output_area img,
div.output_area svg {
  max-width: 100%;
  height: auto;
}
div.output_area img.unconfined,
div.output_area svg.unconfined {
  max-width: none;
}
/* This is needed to protect the pre formating from global settings such
   as that of bootstrap */
.output {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: vertical;
  -moz-box-align: stretch;
  display: box;
  box-orient: vertical;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: column;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.output_area {
    /* Old browsers */
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-box-align: stretch;
    display: -moz-box;
    -moz-box-orient: vertical;
    -moz-box-align: stretch;
    display: box;
    box-orient: vertical;
    box-align: stretch;
    /* Modern browsers */
    display: flex;
    flex-direction: column;
    align-items: stretch;
  }
}
div.output_area pre {
  margin: 0;
  padding: 0;
  border: 0;
  vertical-align: baseline;
  color: black;
  background-color: transparent;
  border-radius: 0;
}
/* This class is for the output subarea inside the output_area and after
   the prompt div. */
div.output_subarea {
  overflow-x: auto;
  padding: 0.4em;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
  max-width: calc(100% - 14ex);
}
div.output_scroll div.output_subarea {
  overflow-x: visible;
}
/* The rest of the output_* classes are for special styling of the different
   output types */
/* all text output has this class: */
div.output_text {
  text-align: left;
  color: #000;
  /* This has to match that of the the CodeMirror class line-height below */
  line-height: 1.21429em;
}
/* stdout/stderr are 'text' as well as 'stream', but execute_result/error are *not* streams */
div.output_stderr {
  background: #fdd;
  /* very light red background for stderr */
}
div.output_latex {
  text-align: left;
}
/* Empty output_javascript divs should have no height */
div.output_javascript:empty {
  padding: 0;
}
.js-error {
  color: darkred;
}
/* raw_input styles */
div.raw_input_container {
  line-height: 1.21429em;
  padding-top: 5px;
}
pre.raw_input_prompt {
  /* nothing needed here. */
}
input.raw_input {
  font-family: monospace;
  font-size: inherit;
  color: inherit;
  width: auto;
  /* make sure input baseline aligns with prompt */
  vertical-align: baseline;
  /* padding + margin = 0.5em between prompt and cursor */
  padding: 0em 0.25em;
  margin: 0em 0.25em;
}
input.raw_input:focus {
  box-shadow: none;
}
p.p-space {
  margin-bottom: 10px;
}
div.output_unrecognized {
  padding: 5px;
  font-weight: bold;
  color: red;
}
div.output_unrecognized a {
  color: inherit;
  text-decoration: none;
}
div.output_unrecognized a:hover {
  color: inherit;
  text-decoration: none;
}
.rendered_html {
  color: #000;
  /* any extras will just be numbers: */
}
.rendered_html em {
  font-style: italic;
}
.rendered_html strong {
  font-weight: bold;
}
.rendered_html u {
  text-decoration: underline;
}
.rendered_html :link {
  text-decoration: underline;
}
.rendered_html :visited {
  text-decoration: underline;
}
.rendered_html h1 {
  font-size: 185.7%;
  margin: 1.08em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h2 {
  font-size: 157.1%;
  margin: 1.27em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h3 {
  font-size: 128.6%;
  margin: 1.55em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h4 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
}
.rendered_html h5 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h6 {
  font-size: 100%;
  margin: 2em 0 0 0;
  font-weight: bold;
  line-height: 1.0;
  font-style: italic;
}
.rendered_html h1:first-child {
  margin-top: 0.538em;
}
.rendered_html h2:first-child {
  margin-top: 0.636em;
}
.rendered_html h3:first-child {
  margin-top: 0.777em;
}
.rendered_html h4:first-child {
  margin-top: 1em;
}
.rendered_html h5:first-child {
  margin-top: 1em;
}
.rendered_html h6:first-child {
  margin-top: 1em;
}
.rendered_html ul {
  list-style: disc;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ul ul {
  list-style: square;
  margin: 0em 2em;
}
.rendered_html ul ul ul {
  list-style: circle;
  margin: 0em 2em;
}
.rendered_html ol {
  list-style: decimal;
  margin: 0em 2em;
  padding-left: 0px;
}
.rendered_html ol ol {
  list-style: upper-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol {
  list-style: lower-alpha;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol {
  list-style: lower-roman;
  margin: 0em 2em;
}
.rendered_html ol ol ol ol ol {
  list-style: decimal;
  margin: 0em 2em;
}
.rendered_html * + ul {
  margin-top: 1em;
}
.rendered_html * + ol {
  margin-top: 1em;
}
.rendered_html hr {
  color: black;
  background-color: black;
}
.rendered_html pre {
  margin: 1em 2em;
}
.rendered_html pre,
.rendered_html code {
  border: 0;
  background-color: #fff;
  color: #000;
  font-size: 100%;
  padding: 0px;
}
.rendered_html blockquote {
  margin: 1em 2em;
}
.rendered_html table {
  margin-left: auto;
  margin-right: auto;
  border: 1px solid black;
  border-collapse: collapse;
}
.rendered_html tr,
.rendered_html th,
.rendered_html td {
  border: 1px solid black;
  border-collapse: collapse;
  margin: 1em 2em;
}
.rendered_html td,
.rendered_html th {
  text-align: left;
  vertical-align: middle;
  padding: 4px;
}
.rendered_html th {
  font-weight: bold;
}
.rendered_html * + table {
  margin-top: 1em;
}
.rendered_html p {
  text-align: left;
}
.rendered_html * + p {
  margin-top: 1em;
}
.rendered_html img {
  display: block;
  margin-left: auto;
  margin-right: auto;
}
.rendered_html * + img {
  margin-top: 1em;
}
.rendered_html img,
.rendered_html svg {
  max-width: 100%;
  height: auto;
}
.rendered_html img.unconfined,
.rendered_html svg.unconfined {
  max-width: none;
}
div.text_cell {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
}
@media (max-width: 540px) {
  div.text_cell > div.prompt {
    display: none;
  }
}
div.text_cell_render {
  /*font-family: "Helvetica Neue", Arial, Helvetica, Geneva, sans-serif;*/
  outline: none;
  resize: none;
  width: inherit;
  border-style: none;
  padding: 0.5em 0.5em 0.5em 0.4em;
  color: #000;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
a.anchor-link:link {
  text-decoration: none;
  padding: 0px 20px;
  visibility: hidden;
}
h1:hover .anchor-link,
h2:hover .anchor-link,
h3:hover .anchor-link,
h4:hover .anchor-link,
h5:hover .anchor-link,
h6:hover .anchor-link {
  visibility: visible;
}
.text_cell.rendered .input_area {
  display: none;
}
.text_cell.rendered .rendered_html {
  overflow-x: auto;
  overflow-y: hidden;
}
.text_cell.unrendered .text_cell_render {
  display: none;
}
.cm-header-1,
.cm-header-2,
.cm-header-3,
.cm-header-4,
.cm-header-5,
.cm-header-6 {
  font-weight: bold;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
.cm-header-1 {
  font-size: 185.7%;
}
.cm-header-2 {
  font-size: 157.1%;
}
.cm-header-3 {
  font-size: 128.6%;
}
.cm-header-4 {
  font-size: 110%;
}
.cm-header-5 {
  font-size: 100%;
  font-style: italic;
}
.cm-header-6 {
  font-size: 100%;
  font-style: italic;
}
/*!
*
* IPython notebook webapp
*
*/
@media (max-width: 767px) {
  .notebook_app {
    padding-left: 0px;
    padding-right: 0px;
  }
}
#ipython-main-app {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook_panel {
  margin: 0px;
  padding: 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  height: 100%;
}
div#notebook {
  font-size: 14px;
  line-height: 20px;
  overflow-y: hidden;
  overflow-x: auto;
  width: 100%;
  /* This spaces the page away from the edge of the notebook area */
  padding-top: 20px;
  margin: 0px;
  outline: none;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  min-height: 100%;
}
@media not print {
  #notebook-container {
    padding: 15px;
    background-color: #fff;
    min-height: 0;
    -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
    box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  }
}
@media print {
  #notebook-container {
    width: 100%;
  }
}
div.ui-widget-content {
  border: 1px solid #ababab;
  outline: none;
}
pre.dialog {
  background-color: #f7f7f7;
  border: 1px solid #ddd;
  border-radius: 2px;
  padding: 0.4em;
  padding-left: 2em;
}
p.dialog {
  padding: 0.2em;
}
/* Word-wrap output correctly.  This is the CSS3 spelling, though Firefox seems
   to not honor it correctly.  Webkit browsers (Chrome, rekonq, Safari) do.
 */
pre,
code,
kbd,
samp {
  white-space: pre-wrap;
}
#fonttest {
  font-family: monospace;
}
p {
  margin-bottom: 0;
}
.end_space {
  min-height: 100px;
  transition: height .2s ease;
}
.notebook_app > #header {
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
@media not print {
  .notebook_app {
    background-color: #EEE;
  }
}
kbd {
  border-style: solid;
  border-width: 1px;
  box-shadow: none;
  margin: 2px;
  padding-left: 2px;
  padding-right: 2px;
  padding-top: 1px;
  padding-bottom: 1px;
}
/* CSS for the cell toolbar */
.celltoolbar {
  border: thin solid #CFCFCF;
  border-bottom: none;
  background: #EEE;
  border-radius: 2px 2px 0px 0px;
  width: 100%;
  height: 29px;
  padding-right: 4px;
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  /* Old browsers */
  -webkit-box-pack: end;
  -moz-box-pack: end;
  box-pack: end;
  /* Modern browsers */
  justify-content: flex-end;
  display: -webkit-flex;
}
@media print {
  .celltoolbar {
    display: none;
  }
}
.ctb_hideshow {
  display: none;
  vertical-align: bottom;
}
/* ctb_show is added to the ctb_hideshow div to show the cell toolbar.
   Cell toolbars are only shown when the ctb_global_show class is also set.
*/
.ctb_global_show .ctb_show.ctb_hideshow {
  display: block;
}
.ctb_global_show .ctb_show + .input_area,
.ctb_global_show .ctb_show + div.text_cell_input,
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border-top-right-radius: 0px;
  border-top-left-radius: 0px;
}
.ctb_global_show .ctb_show ~ div.text_cell_render {
  border: 1px solid #cfcfcf;
}
.celltoolbar {
  font-size: 87%;
  padding-top: 3px;
}
.celltoolbar select {
  display: block;
  width: 100%;
  height: 32px;
  padding: 6px 12px;
  font-size: 13px;
  line-height: 1.42857143;
  color: #555555;
  background-color: #fff;
  background-image: none;
  border: 1px solid #ccc;
  border-radius: 2px;
  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
  -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
  height: 30px;
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 1px;
  width: inherit;
  font-size: inherit;
  height: 22px;
  padding: 0px;
  display: inline-block;
}
.celltoolbar select:focus {
  border-color: #66afe9;
  outline: 0;
  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
  box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
}
.celltoolbar select::-moz-placeholder {
  color: #999;
  opacity: 1;
}
.celltoolbar select:-ms-input-placeholder {
  color: #999;
}
.celltoolbar select::-webkit-input-placeholder {
  color: #999;
}
.celltoolbar select::-ms-expand {
  border: 0;
  background-color: transparent;
}
.celltoolbar select[disabled],
.celltoolbar select[readonly],
fieldset[disabled] .celltoolbar select {
  background-color: #eeeeee;
  opacity: 1;
}
.celltoolbar select[disabled],
fieldset[disabled] .celltoolbar select {
  cursor: not-allowed;
}
textarea.celltoolbar select {
  height: auto;
}
select.celltoolbar select {
  height: 30px;
  line-height: 30px;
}
textarea.celltoolbar select,
select[multiple].celltoolbar select {
  height: auto;
}
.celltoolbar label {
  margin-left: 5px;
  margin-right: 5px;
}
.completions {
  position: absolute;
  z-index: 110;
  overflow: hidden;
  border: 1px solid #ababab;
  border-radius: 2px;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  line-height: 1;
}
.completions select {
  background: white;
  outline: none;
  border: none;
  padding: 0px;
  margin: 0px;
  overflow: auto;
  font-family: monospace;
  font-size: 110%;
  color: #000;
  width: auto;
}
.completions select option.context {
  color: #286090;
}
#kernel_logo_widget {
  float: right !important;
  float: right;
}
#kernel_logo_widget .current_kernel_logo {
  display: none;
  margin-top: -1px;
  margin-bottom: -1px;
  width: 32px;
  height: 32px;
}
#menubar {
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  margin-top: 1px;
}
#menubar .navbar {
  border-top: 1px;
  border-radius: 0px 0px 2px 2px;
  margin-bottom: 0px;
}
#menubar .navbar-toggle {
  float: left;
  padding-top: 7px;
  padding-bottom: 7px;
  border: none;
}
#menubar .navbar-collapse {
  clear: left;
}
.nav-wrapper {
  border-bottom: 1px solid #e7e7e7;
}
i.menu-icon {
  padding-top: 4px;
}
ul#help_menu li a {
  overflow: hidden;
  padding-right: 2.2em;
}
ul#help_menu li a i {
  margin-right: -1.2em;
}
.dropdown-submenu {
  position: relative;
}
.dropdown-submenu > .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -6px;
  margin-left: -1px;
}
.dropdown-submenu:hover > .dropdown-menu {
  display: block;
}
.dropdown-submenu > a:after {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  display: block;
  content: "\f0da";
  float: right;
  color: #333333;
  margin-top: 2px;
  margin-right: -10px;
}
.dropdown-submenu > a:after.pull-left {
  margin-right: .3em;
}
.dropdown-submenu > a:after.pull-right {
  margin-left: .3em;
}
.dropdown-submenu:hover > a:after {
  color: #262626;
}
.dropdown-submenu.pull-left {
  float: none;
}
.dropdown-submenu.pull-left > .dropdown-menu {
  left: -100%;
  margin-left: 10px;
}
#notification_area {
  float: right !important;
  float: right;
  z-index: 10;
}
.indicator_area {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#kernel_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  border-left: 1px solid;
}
#kernel_indicator .kernel_indicator_name {
  padding-left: 5px;
  padding-right: 5px;
}
#modal_indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
}
#readonly-indicator {
  float: right !important;
  float: right;
  color: #777;
  margin-left: 5px;
  margin-right: 5px;
  width: 11px;
  z-index: 10;
  text-align: center;
  width: auto;
  margin-top: 2px;
  margin-bottom: 0px;
  margin-left: 0px;
  margin-right: 0px;
  display: none;
}
.modal_indicator:before {
  width: 1.28571429em;
  text-align: center;
}
.edit_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f040";
}
.edit_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.edit_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.command_mode .modal_indicator:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: ' ';
}
.command_mode .modal_indicator:before.pull-left {
  margin-right: .3em;
}
.command_mode .modal_indicator:before.pull-right {
  margin-left: .3em;
}
.kernel_idle_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f10c";
}
.kernel_idle_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_idle_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_busy_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f111";
}
.kernel_busy_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_busy_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_dead_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f1e2";
}
.kernel_dead_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_dead_icon:before.pull-right {
  margin-left: .3em;
}
.kernel_disconnected_icon:before {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  content: "\f127";
}
.kernel_disconnected_icon:before.pull-left {
  margin-right: .3em;
}
.kernel_disconnected_icon:before.pull-right {
  margin-left: .3em;
}
.notification_widget {
  color: #777;
  z-index: 10;
  background: rgba(240, 240, 240, 0.5);
  margin-right: 4px;
  color: #333;
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget:focus,
.notification_widget.focus {
  color: #333;
  background-color: #e6e6e6;
  border-color: #8c8c8c;
}
.notification_widget:hover {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  color: #333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.notification_widget:active:hover,
.notification_widget.active:hover,
.open > .dropdown-toggle.notification_widget:hover,
.notification_widget:active:focus,
.notification_widget.active:focus,
.open > .dropdown-toggle.notification_widget:focus,
.notification_widget:active.focus,
.notification_widget.active.focus,
.open > .dropdown-toggle.notification_widget.focus {
  color: #333;
  background-color: #d4d4d4;
  border-color: #8c8c8c;
}
.notification_widget:active,
.notification_widget.active,
.open > .dropdown-toggle.notification_widget {
  background-image: none;
}
.notification_widget.disabled:hover,
.notification_widget[disabled]:hover,
fieldset[disabled] .notification_widget:hover,
.notification_widget.disabled:focus,
.notification_widget[disabled]:focus,
fieldset[disabled] .notification_widget:focus,
.notification_widget.disabled.focus,
.notification_widget[disabled].focus,
fieldset[disabled] .notification_widget.focus {
  background-color: #fff;
  border-color: #ccc;
}
.notification_widget .badge {
  color: #fff;
  background-color: #333;
}
.notification_widget.warning {
  color: #fff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning:focus,
.notification_widget.warning.focus {
  color: #fff;
  background-color: #ec971f;
  border-color: #985f0d;
}
.notification_widget.warning:hover {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  color: #fff;
  background-color: #ec971f;
  border-color: #d58512;
}
.notification_widget.warning:active:hover,
.notification_widget.warning.active:hover,
.open > .dropdown-toggle.notification_widget.warning:hover,
.notification_widget.warning:active:focus,
.notification_widget.warning.active:focus,
.open > .dropdown-toggle.notification_widget.warning:focus,
.notification_widget.warning:active.focus,
.notification_widget.warning.active.focus,
.open > .dropdown-toggle.notification_widget.warning.focus {
  color: #fff;
  background-color: #d58512;
  border-color: #985f0d;
}
.notification_widget.warning:active,
.notification_widget.warning.active,
.open > .dropdown-toggle.notification_widget.warning {
  background-image: none;
}
.notification_widget.warning.disabled:hover,
.notification_widget.warning[disabled]:hover,
fieldset[disabled] .notification_widget.warning:hover,
.notification_widget.warning.disabled:focus,
.notification_widget.warning[disabled]:focus,
fieldset[disabled] .notification_widget.warning:focus,
.notification_widget.warning.disabled.focus,
.notification_widget.warning[disabled].focus,
fieldset[disabled] .notification_widget.warning.focus {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.notification_widget.warning .badge {
  color: #f0ad4e;
  background-color: #fff;
}
.notification_widget.success {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success:focus,
.notification_widget.success.focus {
  color: #fff;
  background-color: #449d44;
  border-color: #255625;
}
.notification_widget.success:hover {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  color: #fff;
  background-color: #449d44;
  border-color: #398439;
}
.notification_widget.success:active:hover,
.notification_widget.success.active:hover,
.open > .dropdown-toggle.notification_widget.success:hover,
.notification_widget.success:active:focus,
.notification_widget.success.active:focus,
.open > .dropdown-toggle.notification_widget.success:focus,
.notification_widget.success:active.focus,
.notification_widget.success.active.focus,
.open > .dropdown-toggle.notification_widget.success.focus {
  color: #fff;
  background-color: #398439;
  border-color: #255625;
}
.notification_widget.success:active,
.notification_widget.success.active,
.open > .dropdown-toggle.notification_widget.success {
  background-image: none;
}
.notification_widget.success.disabled:hover,
.notification_widget.success[disabled]:hover,
fieldset[disabled] .notification_widget.success:hover,
.notification_widget.success.disabled:focus,
.notification_widget.success[disabled]:focus,
fieldset[disabled] .notification_widget.success:focus,
.notification_widget.success.disabled.focus,
.notification_widget.success[disabled].focus,
fieldset[disabled] .notification_widget.success.focus {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.notification_widget.success .badge {
  color: #5cb85c;
  background-color: #fff;
}
.notification_widget.info {
  color: #fff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info:focus,
.notification_widget.info.focus {
  color: #fff;
  background-color: #31b0d5;
  border-color: #1b6d85;
}
.notification_widget.info:hover {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  color: #fff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.notification_widget.info:active:hover,
.notification_widget.info.active:hover,
.open > .dropdown-toggle.notification_widget.info:hover,
.notification_widget.info:active:focus,
.notification_widget.info.active:focus,
.open > .dropdown-toggle.notification_widget.info:focus,
.notification_widget.info:active.focus,
.notification_widget.info.active.focus,
.open > .dropdown-toggle.notification_widget.info.focus {
  color: #fff;
  background-color: #269abc;
  border-color: #1b6d85;
}
.notification_widget.info:active,
.notification_widget.info.active,
.open > .dropdown-toggle.notification_widget.info {
  background-image: none;
}
.notification_widget.info.disabled:hover,
.notification_widget.info[disabled]:hover,
fieldset[disabled] .notification_widget.info:hover,
.notification_widget.info.disabled:focus,
.notification_widget.info[disabled]:focus,
fieldset[disabled] .notification_widget.info:focus,
.notification_widget.info.disabled.focus,
.notification_widget.info[disabled].focus,
fieldset[disabled] .notification_widget.info.focus {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.notification_widget.info .badge {
  color: #5bc0de;
  background-color: #fff;
}
.notification_widget.danger {
  color: #fff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger:focus,
.notification_widget.danger.focus {
  color: #fff;
  background-color: #c9302c;
  border-color: #761c19;
}
.notification_widget.danger:hover {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  color: #fff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.notification_widget.danger:active:hover,
.notification_widget.danger.active:hover,
.open > .dropdown-toggle.notification_widget.danger:hover,
.notification_widget.danger:active:focus,
.notification_widget.danger.active:focus,
.open > .dropdown-toggle.notification_widget.danger:focus,
.notification_widget.danger:active.focus,
.notification_widget.danger.active.focus,
.open > .dropdown-toggle.notification_widget.danger.focus {
  color: #fff;
  background-color: #ac2925;
  border-color: #761c19;
}
.notification_widget.danger:active,
.notification_widget.danger.active,
.open > .dropdown-toggle.notification_widget.danger {
  background-image: none;
}
.notification_widget.danger.disabled:hover,
.notification_widget.danger[disabled]:hover,
fieldset[disabled] .notification_widget.danger:hover,
.notification_widget.danger.disabled:focus,
.notification_widget.danger[disabled]:focus,
fieldset[disabled] .notification_widget.danger:focus,
.notification_widget.danger.disabled.focus,
.notification_widget.danger[disabled].focus,
fieldset[disabled] .notification_widget.danger.focus {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.notification_widget.danger .badge {
  color: #d9534f;
  background-color: #fff;
}
div#pager {
  background-color: #fff;
  font-size: 14px;
  line-height: 20px;
  overflow: hidden;
  display: none;
  position: fixed;
  bottom: 0px;
  width: 100%;
  max-height: 50%;
  padding-top: 8px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  /* Display over codemirror */
  z-index: 100;
  /* Hack which prevents jquery ui resizable from changing top. */
  top: auto !important;
}
div#pager pre {
  line-height: 1.21429em;
  color: #000;
  background-color: #f7f7f7;
  padding: 0.4em;
}
div#pager #pager-button-area {
  position: absolute;
  top: 8px;
  right: 20px;
}
div#pager #pager-contents {
  position: relative;
  overflow: auto;
  width: 100%;
  height: 100%;
}
div#pager #pager-contents #pager-container {
  position: relative;
  padding: 15px 0px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
div#pager .ui-resizable-handle {
  top: 0px;
  height: 8px;
  background: #f7f7f7;
  border-top: 1px solid #cfcfcf;
  border-bottom: 1px solid #cfcfcf;
  /* This injects handle bars (a short, wide = symbol) for 
        the resize handle. */
}
div#pager .ui-resizable-handle::after {
  content: '';
  top: 2px;
  left: 50%;
  height: 3px;
  width: 30px;
  margin-left: -15px;
  position: absolute;
  border-top: 1px solid #cfcfcf;
}
.quickhelp {
  /* Old browsers */
  display: -webkit-box;
  -webkit-box-orient: horizontal;
  -webkit-box-align: stretch;
  display: -moz-box;
  -moz-box-orient: horizontal;
  -moz-box-align: stretch;
  display: box;
  box-orient: horizontal;
  box-align: stretch;
  /* Modern browsers */
  display: flex;
  flex-direction: row;
  align-items: stretch;
  line-height: 1.8em;
}
.shortcut_key {
  display: inline-block;
  width: 20ex;
  text-align: right;
  font-family: monospace;
}
.shortcut_descr {
  display: inline-block;
  /* Old browsers */
  -webkit-box-flex: 1;
  -moz-box-flex: 1;
  box-flex: 1;
  /* Modern browsers */
  flex: 1;
}
span.save_widget {
  margin-top: 6px;
}
span.save_widget span.filename {
  height: 1em;
  line-height: 1em;
  padding: 3px;
  margin-left: 16px;
  border: none;
  font-size: 146.5%;
  border-radius: 2px;
}
span.save_widget span.filename:hover {
  background-color: #e6e6e6;
}
span.checkpoint_status,
span.autosave_status {
  font-size: small;
}
@media (max-width: 767px) {
  span.save_widget {
    font-size: small;
  }
  span.checkpoint_status,
  span.autosave_status {
    display: none;
  }
}
@media (min-width: 768px) and (max-width: 991px) {
  span.checkpoint_status {
    display: none;
  }
  span.autosave_status {
    font-size: x-small;
  }
}
.toolbar {
  padding: 0px;
  margin-left: -5px;
  margin-top: 2px;
  margin-bottom: 5px;
  box-sizing: border-box;
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
}
.toolbar select,
.toolbar label {
  width: auto;
  vertical-align: middle;
  margin-right: 2px;
  margin-bottom: 0px;
  display: inline;
  font-size: 92%;
  margin-left: 0.3em;
  margin-right: 0.3em;
  padding: 0px;
  padding-top: 3px;
}
.toolbar .btn {
  padding: 2px 8px;
}
.toolbar .btn-group {
  margin-top: 0px;
  margin-left: 5px;
}
#maintoolbar {
  margin-bottom: -3px;
  margin-top: -8px;
  border: 0px;
  min-height: 27px;
  margin-left: 0px;
  padding-top: 11px;
  padding-bottom: 3px;
}
#maintoolbar .navbar-text {
  float: none;
  vertical-align: middle;
  text-align: right;
  margin-left: 5px;
  margin-right: 0px;
  margin-top: 0px;
}
.select-xs {
  height: 24px;
}
.pulse,
.dropdown-menu > li > a.pulse,
li.pulse > a.dropdown-toggle,
li.pulse.open > a.dropdown-toggle {
  background-color: #F37626;
  color: white;
}
/**
 * Primary styles
 *
 * Author: Jupyter Development Team
 */
/** WARNING IF YOU ARE EDITTING THIS FILE, if this is a .css file, It has a lot
 * of chance of beeing generated from the ../less/[samename].less file, you can
 * try to get back the less file by reverting somme commit in history
 **/
/*
 * We'll try to get something pretty, so we
 * have some strange css to have the scroll bar on
 * the left with fix button on the top right of the tooltip
 */
@-moz-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-webkit-keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}
@-moz-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
@-webkit-keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
/*properties of tooltip after "expand"*/
.bigtooltip {
  overflow: auto;
  height: 200px;
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
}
/*properties of tooltip before "expand"*/
.smalltooltip {
  -webkit-transition-property: height;
  -webkit-transition-duration: 500ms;
  -moz-transition-property: height;
  -moz-transition-duration: 500ms;
  transition-property: height;
  transition-duration: 500ms;
  text-overflow: ellipsis;
  overflow: hidden;
  height: 80px;
}
.tooltipbuttons {
  position: absolute;
  padding-right: 15px;
  top: 0px;
  right: 0px;
}
.tooltiptext {
  /*avoid the button to overlap on some docstring*/
  padding-right: 30px;
}
.ipython_tooltip {
  max-width: 700px;
  /*fade-in animation when inserted*/
  -webkit-animation: fadeOut 400ms;
  -moz-animation: fadeOut 400ms;
  animation: fadeOut 400ms;
  -webkit-animation: fadeIn 400ms;
  -moz-animation: fadeIn 400ms;
  animation: fadeIn 400ms;
  vertical-align: middle;
  background-color: #f7f7f7;
  overflow: visible;
  border: #ababab 1px solid;
  outline: none;
  padding: 3px;
  margin: 0px;
  padding-left: 7px;
  font-family: monospace;
  min-height: 50px;
  -moz-box-shadow: 0px 6px 10px -1px #adadad;
  -webkit-box-shadow: 0px 6px 10px -1px #adadad;
  box-shadow: 0px 6px 10px -1px #adadad;
  border-radius: 2px;
  position: absolute;
  z-index: 1000;
}
.ipython_tooltip a {
  float: right;
}
.ipython_tooltip .tooltiptext pre {
  border: 0;
  border-radius: 0;
  font-size: 100%;
  background-color: #f7f7f7;
}
.pretooltiparrow {
  left: 0px;
  margin: 0px;
  top: -16px;
  width: 40px;
  height: 16px;
  overflow: hidden;
  position: absolute;
}
.pretooltiparrow:before {
  background-color: #f7f7f7;
  border: 1px #ababab solid;
  z-index: 11;
  content: "";
  position: absolute;
  left: 15px;
  top: 10px;
  width: 25px;
  height: 25px;
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
  -ms-transform: rotate(45deg);
  -o-transform: rotate(45deg);
}
ul.typeahead-list i {
  margin-left: -10px;
  width: 18px;
}
ul.typeahead-list {
  max-height: 80vh;
  overflow: auto;
}
ul.typeahead-list > li > a {
  /** Firefox bug **/
  /* see https://github.com/jupyter/notebook/issues/559 */
  white-space: normal;
}
.cmd-palette .modal-body {
  padding: 7px;
}
.cmd-palette form {
  background: white;
}
.cmd-palette input {
  outline: none;
}
.no-shortcut {
  display: none;
}
.command-shortcut:before {
  content: "(command)";
  padding-right: 3px;
  color: #777777;
}
.edit-shortcut:before {
  content: "(edit)";
  padding-right: 3px;
  color: #777777;
}
#find-and-replace #replace-preview .match,
#find-and-replace #replace-preview .insert {
  background-color: #BBDEFB;
  border-color: #90CAF9;
  border-style: solid;
  border-width: 1px;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .match {
  background-color: #FFCDD2;
  border-color: #EF9A9A;
  border-radius: 0px;
}
#find-and-replace #replace-preview .replace .insert {
  background-color: #C8E6C9;
  border-color: #A5D6A7;
  border-radius: 0px;
}
#find-and-replace #replace-preview {
  max-height: 60vh;
  overflow: auto;
}
#find-and-replace #replace-preview pre {
  padding: 5px 10px;
}
.terminal-app {
  background: #EEE;
}
.terminal-app #header {
  background: #fff;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.2);
}
.terminal-app .terminal {
  float: left;
  font-family: monospace;
  color: white;
  background: black;
  padding: 0.4em;
  border-radius: 2px;
  -webkit-box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
  box-shadow: 0px 0px 12px 1px rgba(87, 87, 87, 0.4);
}
.terminal-app .terminal,
.terminal-app .terminal dummy-screen {
  line-height: 1em;
  font-size: 14px;
}
.terminal-app .terminal-cursor {
  color: black;
  background: white;
}
.terminal-app #terminado-container {
  margin-top: 20px;
}
/*# sourceMappingURL=style.min.css.map */
    </style>
<style type="text/css">
    .highlight .hll { background-color: #ffffcc }
.highlight  { background: #f8f8f8; }
.highlight .c { color: #408080; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .k { color: #008000; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .ch { color: #408080; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408080; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #BC7A00 } /* Comment.Preproc */
.highlight .cpf { color: #408080; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408080; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408080; font-style: italic } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008000 } /* Keyword.Pseudo */
.highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #B00040 } /* Keyword.Type */
.highlight .m { color: #666666 } /* Literal.Number */
.highlight .s { color: #BA2121 } /* Literal.String */
.highlight .na { color: #7D9029 } /* Name.Attribute */
.highlight .nb { color: #008000 } /* Name.Builtin */
.highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */
.highlight .no { color: #880000 } /* Name.Constant */
.highlight .nd { color: #AA22FF } /* Name.Decorator */
.highlight .ni { color: #999999; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0000FF } /* Name.Function */
.highlight .nl { color: #A0A000 } /* Name.Label */
.highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #19177C } /* Name.Variable */
.highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #666666 } /* Literal.Number.Bin */
.highlight .mf { color: #666666 } /* Literal.Number.Float */
.highlight .mh { color: #666666 } /* Literal.Number.Hex */
.highlight .mi { color: #666666 } /* Literal.Number.Integer */
.highlight .mo { color: #666666 } /* Literal.Number.Oct */
.highlight .sb { color: #BA2121 } /* Literal.String.Backtick */
.highlight .sc { color: #BA2121 } /* Literal.String.Char */
.highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #BA2121 } /* Literal.String.Double */
.highlight .se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */
.highlight .si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.highlight .sx { color: #008000 } /* Literal.String.Other */
.highlight .sr { color: #BB6688 } /* Literal.String.Regex */
.highlight .s1 { color: #BA2121 } /* Literal.String.Single */
.highlight .ss { color: #19177C } /* Literal.String.Symbol */
.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */
.highlight .vc { color: #19177C } /* Name.Variable.Class */
.highlight .vg { color: #19177C } /* Name.Variable.Global */
.highlight .vi { color: #19177C } /* Name.Variable.Instance */
.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */
    </style>
<style type="text/css">
    
/* Temporary definitions which will become obsolete with Notebook release 5.0 */
.ansi-black-fg { color: #3E424D; }
.ansi-black-bg { background-color: #3E424D; }
.ansi-black-intense-fg { color: #282C36; }
.ansi-black-intense-bg { background-color: #282C36; }
.ansi-red-fg { color: #E75C58; }
.ansi-red-bg { background-color: #E75C58; }
.ansi-red-intense-fg { color: #B22B31; }
.ansi-red-intense-bg { background-color: #B22B31; }
.ansi-green-fg { color: #00A250; }
.ansi-green-bg { background-color: #00A250; }
.ansi-green-intense-fg { color: #007427; }
.ansi-green-intense-bg { background-color: #007427; }
.ansi-yellow-fg { color: #DDB62B; }
.ansi-yellow-bg { background-color: #DDB62B; }
.ansi-yellow-intense-fg { color: #B27D12; }
.ansi-yellow-intense-bg { background-color: #B27D12; }
.ansi-blue-fg { color: #208FFB; }
.ansi-blue-bg { background-color: #208FFB; }
.ansi-blue-intense-fg { color: #0065CA; }
.ansi-blue-intense-bg { background-color: #0065CA; }
.ansi-magenta-fg { color: #D160C4; }
.ansi-magenta-bg { background-color: #D160C4; }
.ansi-magenta-intense-fg { color: #A03196; }
.ansi-magenta-intense-bg { background-color: #A03196; }
.ansi-cyan-fg { color: #60C6C8; }
.ansi-cyan-bg { background-color: #60C6C8; }
.ansi-cyan-intense-fg { color: #258F8F; }
.ansi-cyan-intense-bg { background-color: #258F8F; }
.ansi-white-fg { color: #C5C1B4; }
.ansi-white-bg { background-color: #C5C1B4; }
.ansi-white-intense-fg { color: #A1A6B2; }
.ansi-white-intense-bg { background-color: #A1A6B2; }

.ansi-bold { font-weight: bold; }

    </style>


<style type="text/css">
/* Overrides of notebook CSS for static HTML export */
body {
  overflow: visible;
  padding: 8px;
}

div#notebook {
  overflow: visible;
  border-top: none;
}

@media print {
  div.cell {
    display: block;
    page-break-inside: avoid;
  } 
  div.output_wrapper { 
    display: block;
    page-break-inside: avoid; 
  }
  div.output { 
    display: block;
    page-break-inside: avoid; 
  }
}
</style>

<!-- Custom stylesheet, it must be in the same directory as the html file -->
<link rel="stylesheet" href="custom.css">

<!-- Loading mathjax macro -->
<!-- Load mathjax -->
    <script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>
    <!-- MathJax configuration -->
    <script type="text/x-mathjax-config">
    MathJax.Hub.Config({
        tex2jax: {
            inlineMath: [ ['$','$'], ["\\(","\\)"] ],
            displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
            processEscapes: true,
            processEnvironments: true
        },
        // Center justify equations in code and markdown cells. Elsewhere
        // we use CSS to left justify single line equations in code cells.
        displayAlign: 'center',
        "HTML-CSS": {
            styles: {'.MathJax_Display': {"margin": 0}},
            linebreaks: { automatic: true }
        }
    });
    </script>
    <!-- End of mathjax configuration --></head>
<body>
  <div tabindex="-1" id="notebook" class="border-box-sizing">
    <div class="container" id="notebook-container">

<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[1]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
<span class="kn">import</span> <span class="nn">numpy.random</span> <span class="k">as</span> <span class="nn">rnd</span>
<span class="kn">import</span> <span class="nn">tensorflow</span> <span class="k">as</span> <span class="nn">tf</span>
<span class="kn">import</span> <span class="nn">sys</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Data-Representations">Data Representations<a class="anchor-link" href="#Data-Representations">&#182;</a></h3><ul>
<li>Much easier to remember <em>sequence patterns</em> than to remember exact lists. First studied as chess game positions (1970s).</li>
<li>Autoencoder converts inputs to internal shorthand, then returns best-guess similarity. Two parts: <em>encoder</em> (recognizer) &amp; <em>decoder</em> (generator, aka <em>reconstructor</em>).</li>
<li>Reconstruction loss - penalizes model when reconstructions /= inputs.</li>
<li>Internal representation = lower dimensionality, so AE is forced to learn most important features in inputs.</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="PCA-with-Undercomplete-Linear-Autoencoder">PCA with Undercomplete Linear Autoencoder<a class="anchor-link" href="#PCA-with-Undercomplete-Linear-Autoencoder">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[2]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># lets build a 3D dataset</span>

<span class="n">rnd</span><span class="o">.</span><span class="n">seed</span><span class="p">(</span><span class="mi">4</span><span class="p">)</span>
<span class="n">m</span> <span class="o">=</span> <span class="mi">100</span>
<span class="n">w1</span><span class="p">,</span> <span class="n">w2</span> <span class="o">=</span> <span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.3</span>
<span class="n">noise</span> <span class="o">=</span> <span class="mf">0.1</span>

<span class="n">angles</span> <span class="o">=</span> <span class="n">rnd</span><span class="o">.</span><span class="n">rand</span><span class="p">(</span><span class="n">m</span><span class="p">)</span> <span class="o">*</span> <span class="mi">3</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">pi</span> <span class="o">/</span> <span class="mi">2</span> <span class="o">-</span> <span class="mf">0.5</span>
<span class="n">X_train</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">empty</span><span class="p">((</span><span class="n">m</span><span class="p">,</span> <span class="mi">3</span><span class="p">))</span>
<span class="n">X_train</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">cos</span><span class="p">(</span><span class="n">angles</span><span class="p">)</span> <span class="o">+</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">angles</span><span class="p">)</span><span class="o">/</span><span class="mi">2</span> <span class="o">+</span> <span class="n">noise</span> <span class="o">*</span> <span class="n">rnd</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="n">m</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span>
<span class="n">X_train</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">]</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">sin</span><span class="p">(</span><span class="n">angles</span><span class="p">)</span> <span class="o">*</span> <span class="mf">0.7</span> <span class="o">+</span> <span class="n">noise</span> <span class="o">*</span> <span class="n">rnd</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="n">m</span><span class="p">)</span> <span class="o">/</span> <span class="mi">2</span>
<span class="n">X_train</span><span class="p">[:,</span> <span class="mi">2</span><span class="p">]</span> <span class="o">=</span> <span class="n">X_train</span><span class="p">[:,</span> <span class="mi">0</span><span class="p">]</span> <span class="o">*</span> <span class="n">w1</span> <span class="o">+</span> <span class="n">X_train</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">]</span> <span class="o">*</span> <span class="n">w2</span> <span class="o">+</span> <span class="n">noise</span> <span class="o">*</span> <span class="n">rnd</span><span class="o">.</span><span class="n">randn</span><span class="p">(</span><span class="n">m</span><span class="p">)</span>

<span class="c1"># normalize it</span>

<span class="kn">from</span> <span class="nn">sklearn.preprocessing</span> <span class="k">import</span> <span class="n">StandardScaler</span>
<span class="n">scaler</span> <span class="o">=</span> <span class="n">StandardScaler</span><span class="p">()</span>
<span class="n">X_train</span> <span class="o">=</span> <span class="n">scaler</span><span class="o">.</span><span class="n">fit_transform</span><span class="p">(</span><span class="n">X_train</span><span class="p">)</span>

<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">X_train</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
AElFTkSuQmCC
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[3]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># build AE</span>

<span class="kn">from</span> <span class="nn">tensorflow.contrib.layers</span> <span class="k">import</span> <span class="n">fully_connected</span>

<span class="n">n_inputs</span> <span class="o">=</span> <span class="mi">3</span> <span class="c1"># 3D inputs</span>
<span class="n">n_hidden</span> <span class="o">=</span> <span class="mi">2</span> <span class="c1"># 2D codings</span>
<span class="n">n_outputs</span> <span class="o">=</span> <span class="n">n_inputs</span>

<span class="n">learning_rate</span> <span class="o">=</span> <span class="mf">0.01</span>

<span class="n">X</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span>
    <span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="n">n_inputs</span><span class="p">])</span>

<span class="c1">#</span>
<span class="c1"># set activation_fn=None &amp; use MSE for cost function</span>
<span class="c1"># to perform simple PCA.</span>
<span class="c1">#</span>

<span class="n">hidden</span> <span class="o">=</span> <span class="n">fully_connected</span><span class="p">(</span>
    <span class="n">X</span><span class="p">,</span> 
    <span class="n">n_hidden</span><span class="p">,</span> 
    <span class="n">activation_fn</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>

<span class="n">outputs</span> <span class="o">=</span> <span class="n">fully_connected</span><span class="p">(</span>
    <span class="n">hidden</span><span class="p">,</span> 
    <span class="n">n_outputs</span><span class="p">,</span> 
    <span class="n">activation_fn</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>

<span class="c1"># MSE</span>
<span class="n">reconstruction_loss</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">reduce_mean</span><span class="p">(</span>
    <span class="n">tf</span><span class="o">.</span><span class="n">square</span><span class="p">(</span><span class="n">outputs</span> <span class="o">-</span> <span class="n">X</span><span class="p">))</span>

<span class="n">optimizer</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">AdamOptimizer</span><span class="p">(</span>
    <span class="n">learning_rate</span><span class="p">)</span>

<span class="n">training_op</span> <span class="o">=</span> <span class="n">optimizer</span><span class="o">.</span><span class="n">minimize</span><span class="p">(</span>
    <span class="n">reconstruction_loss</span><span class="p">)</span>

<span class="n">init</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">global_variables_initializer</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[4]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># run the AE</span>

<span class="n">n_iterations</span> <span class="o">=</span> <span class="mi">10000</span>
<span class="n">codings</span> <span class="o">=</span> <span class="n">hidden</span>

<span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span> <span class="k">as</span> <span class="n">sess</span><span class="p">:</span>
    <span class="n">init</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
    <span class="k">for</span> <span class="n">iteration</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_iterations</span><span class="p">):</span>
        <span class="n">training_op</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">X</span><span class="p">:</span> <span class="n">X_train</span><span class="p">})</span>
    <span class="n">codings_val</span> <span class="o">=</span> <span class="n">codings</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span><span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">X</span><span class="p">:</span> <span class="n">X_train</span><span class="p">})</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[5]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">4</span><span class="p">,</span><span class="mi">3</span><span class="p">))</span>
<span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">codings_val</span><span class="p">[:,</span><span class="mi">0</span><span class="p">],</span> <span class="n">codings_val</span><span class="p">[:,</span> <span class="mi">1</span><span class="p">],</span> <span class="s2">&quot;b.&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s2">&quot;$z_1$&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">18</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s2">&quot;$z_2$&quot;</span><span class="p">,</span> <span class="n">fontsize</span><span class="o">=</span><span class="mi">18</span><span class="p">,</span> <span class="n">rotation</span><span class="o">=</span><span class="mi">0</span><span class="p">)</span>
<span class="c1">#ave_fig(&quot;linear_autoencoder_pca_plot&quot;)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>

<span class="c1"># plot: 2D projection with max variance</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Stacked-Autoencoders">Stacked Autoencoders<a class="anchor-link" href="#Stacked-Autoencoders">&#182;</a></h3><ul>
<li>AEs with multiple hidden layers - for more complex model learning
<img src="pics/stacked-AE.png" alt="stacked-AE"></li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[6]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">tf</span><span class="o">.</span><span class="n">reset_default_graph</span><span class="p">()</span>

<span class="n">n_inputs</span>      <span class="o">=</span> <span class="mi">28</span> <span class="o">*</span> <span class="mi">28</span> <span class="c1"># for MNIST</span>
<span class="n">n_hidden1</span>     <span class="o">=</span> <span class="mi">300</span>
<span class="n">n_hidden2</span>     <span class="o">=</span> <span class="mi">150</span> <span class="c1"># codings</span>
<span class="n">n_hidden3</span>     <span class="o">=</span> <span class="n">n_hidden1</span>
<span class="n">n_outputs</span>     <span class="o">=</span> <span class="n">n_inputs</span>
<span class="n">learning_rate</span> <span class="o">=</span> <span class="mf">0.01</span>
<span class="n">l2_reg</span>        <span class="o">=</span> <span class="mf">0.0001</span>

<span class="n">X</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> 
                   <span class="n">shape</span><span class="o">=</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="n">n_inputs</span><span class="p">])</span>

<span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">framework</span><span class="o">.</span><span class="n">arg_scope</span><span class="p">(</span>
    <span class="p">[</span><span class="n">fully_connected</span><span class="p">],</span>
    <span class="n">activation_fn</span><span class="o">=</span><span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">elu</span><span class="p">,</span>
    <span class="n">weights_initializer</span><span class="o">=</span><span class="n">tf</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">variance_scaling_initializer</span><span class="p">(),</span>
    <span class="n">weights_regularizer</span><span class="o">=</span><span class="n">tf</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">l2_regularizer</span><span class="p">(</span><span class="n">l2_reg</span><span class="p">)):</span>

    <span class="n">hidden1</span> <span class="o">=</span> <span class="n">fully_connected</span><span class="p">(</span><span class="n">X</span><span class="p">,</span>       <span class="n">n_hidden1</span><span class="p">)</span>
    <span class="n">hidden2</span> <span class="o">=</span> <span class="n">fully_connected</span><span class="p">(</span><span class="n">hidden1</span><span class="p">,</span> <span class="n">n_hidden2</span><span class="p">)</span> <span class="c1"># codings</span>
    <span class="n">hidden3</span> <span class="o">=</span> <span class="n">fully_connected</span><span class="p">(</span><span class="n">hidden2</span><span class="p">,</span> <span class="n">n_hidden3</span><span class="p">)</span>
    <span class="n">outputs</span> <span class="o">=</span> <span class="n">fully_connected</span><span class="p">(</span><span class="n">hidden3</span><span class="p">,</span> <span class="n">n_outputs</span><span class="p">,</span> <span class="n">activation_fn</span><span class="o">=</span><span class="kc">None</span><span class="p">)</span>

<span class="c1"># MSE</span>
<span class="n">reconstruction_loss</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">reduce_mean</span><span class="p">(</span>
    <span class="n">tf</span><span class="o">.</span><span class="n">square</span><span class="p">(</span><span class="n">outputs</span> <span class="o">-</span> <span class="n">X</span><span class="p">))</span>

<span class="n">reg_losses</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">get_collection</span><span class="p">(</span>
    <span class="n">tf</span><span class="o">.</span><span class="n">GraphKeys</span><span class="o">.</span><span class="n">REGULARIZATION_LOSSES</span><span class="p">)</span>

<span class="n">loss</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">add_n</span><span class="p">(</span>
    <span class="p">[</span><span class="n">reconstruction_loss</span><span class="p">]</span> <span class="o">+</span> <span class="n">reg_losses</span><span class="p">)</span>

<span class="n">optimizer</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">AdamOptimizer</span><span class="p">(</span>
    <span class="n">learning_rate</span><span class="p">)</span>

<span class="n">training_op</span> <span class="o">=</span> <span class="n">optimizer</span><span class="o">.</span><span class="n">minimize</span><span class="p">(</span><span class="n">loss</span><span class="p">)</span>

<span class="n">init</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">global_variables_initializer</span><span class="p">()</span>
<span class="n">saver</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">Saver</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[7]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># use MNIST dataset </span>

<span class="kn">from</span> <span class="nn">tensorflow.examples.tutorials.mnist</span> <span class="k">import</span> <span class="n">input_data</span>

<span class="n">mnist</span> <span class="o">=</span> <span class="n">input_data</span><span class="o">.</span><span class="n">read_data_sets</span><span class="p">(</span><span class="s2">&quot;/tmp/data/&quot;</span><span class="p">)</span>

<span class="c1"># train the net. digit labels (y_batch) = unused.</span>

<span class="n">n_epochs</span> <span class="o">=</span> <span class="mi">4</span>
<span class="n">batch_size</span> <span class="o">=</span> <span class="mi">150</span>

<span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span> <span class="k">as</span> <span class="n">sess</span><span class="p">:</span>
    <span class="n">init</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
    <span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_epochs</span><span class="p">):</span>
        <span class="n">n_batches</span> <span class="o">=</span> <span class="n">mnist</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">num_examples</span> <span class="o">//</span> <span class="n">batch_size</span>
        <span class="k">for</span> <span class="n">iteration</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_batches</span><span class="p">):</span>
            <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\r</span><span class="si">{}</span><span class="s2">%&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="mi">100</span> <span class="o">*</span> <span class="n">iteration</span> <span class="o">//</span> <span class="n">n_batches</span><span class="p">),</span> <span class="n">end</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">)</span>
            <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
            <span class="n">X_batch</span><span class="p">,</span> <span class="n">y_batch</span> <span class="o">=</span> <span class="n">mnist</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">next_batch</span><span class="p">(</span><span class="n">batch_size</span><span class="p">)</span>
            <span class="n">sess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">training_op</span><span class="p">,</span> <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">X</span><span class="p">:</span> <span class="n">X_batch</span><span class="p">})</span>
        <span class="n">mse_train</span> <span class="o">=</span> <span class="n">reconstruction_loss</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span><span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">X</span><span class="p">:</span> <span class="n">X_batch</span><span class="p">})</span>
        <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\r</span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">epoch</span><span class="p">),</span> <span class="s2">&quot;Train MSE:&quot;</span><span class="p">,</span> <span class="n">mse_train</span><span class="p">)</span>
        <span class="n">saver</span><span class="o">.</span><span class="n">save</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="s2">&quot;./my_model_all_layers.ckpt&quot;</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>Extracting /tmp/data/train-images-idx3-ubyte.gz
Extracting /tmp/data/train-labels-idx1-ubyte.gz
Extracting /tmp/data/t10k-images-idx3-ubyte.gz
Extracting /tmp/data/t10k-labels-idx1-ubyte.gz
0 Train MSE: 0.02705
1 Train MSE: 0.0137857
2 Train MSE: 0.0113694
3 Train MSE: 0.0107478
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[8]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># utility: plot grayscale 28x28 image</span>

<span class="k">def</span> <span class="nf">plot_image</span><span class="p">(</span><span class="n">image</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">[</span><span class="mi">28</span><span class="p">,</span> <span class="mi">28</span><span class="p">]):</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">imshow</span><span class="p">(</span><span class="n">image</span><span class="o">.</span><span class="n">reshape</span><span class="p">(</span><span class="n">shape</span><span class="p">),</span> <span class="n">cmap</span><span class="o">=</span><span class="s2">&quot;Greys&quot;</span><span class="p">,</span> <span class="n">interpolation</span><span class="o">=</span><span class="s2">&quot;nearest&quot;</span><span class="p">)</span>
    <span class="n">plt</span><span class="o">.</span><span class="n">axis</span><span class="p">(</span><span class="s2">&quot;off&quot;</span><span class="p">)</span>
    
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[9]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># load model, eval on test set (measure reconstruction error, display original &amp; reconstruction)</span>

<span class="k">def</span> <span class="nf">show_reconstructed_digits</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">outputs</span><span class="p">,</span> <span class="n">model_path</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> <span class="n">n_test_digits</span> <span class="o">=</span> <span class="mi">2</span><span class="p">):</span>
    <span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span> <span class="k">as</span> <span class="n">sess</span><span class="p">:</span>
        <span class="k">if</span> <span class="n">model_path</span><span class="p">:</span>
            <span class="n">saver</span><span class="o">.</span><span class="n">restore</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">model_path</span><span class="p">)</span>
        <span class="n">X_test</span> <span class="o">=</span> <span class="n">mnist</span><span class="o">.</span><span class="n">test</span><span class="o">.</span><span class="n">images</span><span class="p">[:</span><span class="n">n_test_digits</span><span class="p">]</span>
        <span class="n">outputs_val</span> <span class="o">=</span> <span class="n">outputs</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span><span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">X</span><span class="p">:</span> <span class="n">X_test</span><span class="p">})</span>

    <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">3</span> <span class="o">*</span> <span class="n">n_test_digits</span><span class="p">))</span>
    <span class="k">for</span> <span class="n">digit_index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_test_digits</span><span class="p">):</span>
        <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="n">n_test_digits</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">digit_index</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
        <span class="n">plot_image</span><span class="p">(</span><span class="n">X_test</span><span class="p">[</span><span class="n">digit_index</span><span class="p">])</span>
        <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="n">n_test_digits</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">digit_index</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">2</span><span class="p">)</span>
        <span class="n">plot_image</span><span class="p">(</span><span class="n">outputs_val</span><span class="p">[</span><span class="n">digit_index</span><span class="p">])</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[10]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">show_reconstructed_digits</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">outputs</span><span class="p">,</span> <span class="s2">&quot;./my_model_all_layers.ckpt&quot;</span><span class="p">)</span>
<span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Tying-Weights">Tying Weights<a class="anchor-link" href="#Tying-Weights">&#182;</a></h3><ul>
<li>Used when AE is symmetrical. Tying decoder layer weights to encoder layers' weights cuts number of weights by 50% (speedup &amp; less memory).</li>
<li>Tied weights in TF is cumbersome. Easier to define layers manually.</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[11]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="n">tf</span><span class="o">.</span><span class="n">reset_default_graph</span><span class="p">()</span>

<span class="n">activation</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">elu</span>

<span class="n">regularizer</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">l2_regularizer</span><span class="p">(</span><span class="n">l2_reg</span><span class="p">)</span>

<span class="n">initializer</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">variance_scaling_initializer</span><span class="p">()</span>

<span class="n">X</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="n">n_inputs</span><span class="p">])</span>

<span class="n">weights1_init</span> <span class="o">=</span> <span class="n">initializer</span><span class="p">([</span><span class="n">n_inputs</span><span class="p">,</span> <span class="n">n_hidden1</span><span class="p">])</span>
<span class="n">weights2_init</span> <span class="o">=</span> <span class="n">initializer</span><span class="p">([</span><span class="n">n_hidden1</span><span class="p">,</span> <span class="n">n_hidden2</span><span class="p">])</span>

<span class="n">weights1</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">weights1_init</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;weights1&quot;</span><span class="p">)</span>
<span class="n">weights2</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">weights2_init</span><span class="p">,</span> <span class="n">dtype</span><span class="o">=</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;weights2&quot;</span><span class="p">)</span>
<span class="c1"># weights 3,4 not vars!</span>
<span class="n">weights3</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="n">weights2</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;weights3&quot;</span><span class="p">)</span> <span class="c1"># tied weights</span>
<span class="n">weights4</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">transpose</span><span class="p">(</span><span class="n">weights1</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">&quot;weights4&quot;</span><span class="p">)</span> <span class="c1"># tied weights</span>

<span class="n">biases1</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">n_hidden1</span><span class="p">),</span><span class="n">name</span><span class="o">=</span><span class="s2">&quot;biases1&quot;</span><span class="p">)</span>
<span class="n">biases2</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">n_hidden2</span><span class="p">),</span><span class="n">name</span><span class="o">=</span><span class="s2">&quot;biases2&quot;</span><span class="p">)</span>
<span class="n">biases3</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">n_hidden3</span><span class="p">),</span><span class="n">name</span><span class="o">=</span><span class="s2">&quot;biases3&quot;</span><span class="p">)</span>
<span class="n">biases4</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Variable</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">zeros</span><span class="p">(</span><span class="n">n_outputs</span><span class="p">),</span><span class="n">name</span><span class="o">=</span><span class="s2">&quot;biases4&quot;</span><span class="p">)</span>

<span class="n">hidden1</span> <span class="o">=</span> <span class="n">activation</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">weights1</span><span class="p">)</span> <span class="o">+</span> <span class="n">biases1</span><span class="p">)</span>
<span class="n">hidden2</span> <span class="o">=</span> <span class="n">activation</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">hidden1</span><span class="p">,</span> <span class="n">weights2</span><span class="p">)</span> <span class="o">+</span> <span class="n">biases2</span><span class="p">)</span>
<span class="n">hidden3</span> <span class="o">=</span> <span class="n">activation</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">hidden2</span><span class="p">,</span> <span class="n">weights3</span><span class="p">)</span> <span class="o">+</span> <span class="n">biases3</span><span class="p">)</span>
<span class="n">outputs</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">hidden3</span><span class="p">,</span> <span class="n">weights4</span><span class="p">)</span> <span class="o">+</span> <span class="n">biases4</span>

<span class="n">reconstruction_loss</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">reduce_mean</span><span class="p">(</span>
    <span class="n">tf</span><span class="o">.</span><span class="n">square</span><span class="p">(</span><span class="n">outputs</span> <span class="o">-</span> <span class="n">X</span><span class="p">))</span>

<span class="n">reg_loss</span> <span class="o">=</span> <span class="n">regularizer</span><span class="p">(</span><span class="n">weights1</span><span class="p">)</span> <span class="o">+</span> <span class="n">regularizer</span><span class="p">(</span><span class="n">weights2</span><span class="p">)</span>

<span class="n">loss</span> <span class="o">=</span> <span class="n">reconstruction_loss</span> <span class="o">+</span> <span class="n">reg_loss</span>

<span class="n">optimizer</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">AdamOptimizer</span><span class="p">(</span><span class="n">learning_rate</span><span class="p">)</span>

<span class="n">training_op</span> <span class="o">=</span> <span class="n">optimizer</span><span class="o">.</span><span class="n">minimize</span><span class="p">(</span><span class="n">loss</span><span class="p">)</span>

<span class="n">init</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">global_variables_initializer</span><span class="p">()</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Training-one-Autoencoder-at-a-time">Training one Autoencoder at a time<a class="anchor-link" href="#Training-one-Autoencoder-at-a-time">&#182;</a></h3><ul>
<li>Often faster to train each shallow AE individually, then stack them.</li>
<li>Simplest approach = use separate TF graph for each phase</li>
</ul>
<p><img src="pics/training-one-AE-atatime.png" alt="one-ae-atatime"></p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[12]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">train_autoencoder</span><span class="p">(</span>
    <span class="n">X_train</span><span class="p">,</span> 
    <span class="n">n_neurons</span><span class="p">,</span> 
    <span class="n">n_epochs</span><span class="p">,</span> 
    <span class="n">batch_size</span><span class="p">,</span> 
    <span class="n">learning_rate</span> <span class="o">=</span> <span class="mf">0.01</span><span class="p">,</span> 
    <span class="n">l2_reg</span> <span class="o">=</span> <span class="mf">0.0005</span><span class="p">,</span> 
    <span class="n">activation_fn</span><span class="o">=</span><span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">elu</span><span class="p">):</span>
    
    <span class="n">graph</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">Graph</span><span class="p">()</span>
    <span class="k">with</span> <span class="n">graph</span><span class="o">.</span><span class="n">as_default</span><span class="p">():</span>
        <span class="n">n_inputs</span> <span class="o">=</span> <span class="n">X_train</span><span class="o">.</span><span class="n">shape</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>

        <span class="n">X</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="n">n_inputs</span><span class="p">])</span>
        
        <span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">framework</span><span class="o">.</span><span class="n">arg_scope</span><span class="p">(</span>
            <span class="p">[</span><span class="n">fully_connected</span><span class="p">],</span>
            <span class="n">activation_fn</span><span class="o">=</span><span class="n">activation_fn</span><span class="p">,</span>
            <span class="n">weights_initializer</span><span class="o">=</span><span class="n">tf</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">variance_scaling_initializer</span><span class="p">(),</span>
            <span class="n">weights_regularizer</span><span class="o">=</span><span class="n">tf</span><span class="o">.</span><span class="n">contrib</span><span class="o">.</span><span class="n">layers</span><span class="o">.</span><span class="n">l2_regularizer</span><span class="p">(</span>
                <span class="n">l2_reg</span><span class="p">)):</span>
            <span class="n">hidden</span> <span class="o">=</span> <span class="n">fully_connected</span><span class="p">(</span>
                <span class="n">X</span><span class="p">,</span> <span class="n">n_neurons</span><span class="p">,</span> <span class="n">scope</span><span class="o">=</span><span class="s2">&quot;hidden&quot;</span><span class="p">)</span>
            <span class="n">outputs</span> <span class="o">=</span> <span class="n">fully_connected</span><span class="p">(</span>
                <span class="n">hidden</span><span class="p">,</span> <span class="n">n_inputs</span><span class="p">,</span> <span class="n">activation_fn</span><span class="o">=</span><span class="kc">None</span><span class="p">,</span> <span class="n">scope</span><span class="o">=</span><span class="s2">&quot;outputs&quot;</span><span class="p">)</span>

        <span class="n">mse</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">reduce_mean</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">square</span><span class="p">(</span><span class="n">outputs</span> <span class="o">-</span> <span class="n">X</span><span class="p">))</span>

        <span class="n">reg_losses</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">get_collection</span><span class="p">(</span>
            <span class="n">tf</span><span class="o">.</span><span class="n">GraphKeys</span><span class="o">.</span><span class="n">REGULARIZATION_LOSSES</span><span class="p">)</span>
        
        <span class="n">loss</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">add_n</span><span class="p">([</span><span class="n">mse</span><span class="p">]</span> <span class="o">+</span> <span class="n">reg_losses</span><span class="p">)</span>

        <span class="n">optimizer</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">AdamOptimizer</span><span class="p">(</span><span class="n">learning_rate</span><span class="p">)</span>
        
        <span class="n">training_op</span> <span class="o">=</span> <span class="n">optimizer</span><span class="o">.</span><span class="n">minimize</span><span class="p">(</span><span class="n">loss</span><span class="p">)</span>

        <span class="n">init</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">global_variables_initializer</span><span class="p">()</span>

    <span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">Session</span><span class="p">(</span><span class="n">graph</span><span class="o">=</span><span class="n">graph</span><span class="p">)</span> <span class="k">as</span> <span class="n">sess</span><span class="p">:</span>
        <span class="n">init</span><span class="o">.</span><span class="n">run</span><span class="p">()</span>
        
        <span class="k">for</span> <span class="n">epoch</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_epochs</span><span class="p">):</span>
            <span class="n">n_batches</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">X_train</span><span class="p">)</span> <span class="o">//</span> <span class="n">batch_size</span>
            
            <span class="k">for</span> <span class="n">iteration</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_batches</span><span class="p">):</span>
                <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\r</span><span class="si">{}</span><span class="s2">%&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="mi">100</span> <span class="o">*</span> <span class="n">iteration</span> <span class="o">//</span> <span class="n">n_batches</span><span class="p">),</span> <span class="n">end</span><span class="o">=</span><span class="s2">&quot;&quot;</span><span class="p">)</span>
                <span class="n">sys</span><span class="o">.</span><span class="n">stdout</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span>
                
                <span class="n">indices</span> <span class="o">=</span> <span class="n">rnd</span><span class="o">.</span><span class="n">permutation</span><span class="p">(</span>
                    <span class="nb">len</span><span class="p">(</span><span class="n">X_train</span><span class="p">))[:</span><span class="n">batch_size</span><span class="p">]</span>
                
                <span class="n">X_batch</span> <span class="o">=</span> <span class="n">X_train</span><span class="p">[</span><span class="n">indices</span><span class="p">]</span>
                
                <span class="n">sess</span><span class="o">.</span><span class="n">run</span><span class="p">(</span>
                    <span class="n">training_op</span><span class="p">,</span> <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">X</span><span class="p">:</span> <span class="n">X_batch</span><span class="p">})</span>
                
            <span class="n">mse_train</span> <span class="o">=</span> <span class="n">mse</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span>
                <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">X</span><span class="p">:</span> <span class="n">X_batch</span><span class="p">})</span>
            
            <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\r</span><span class="si">{}</span><span class="s2">&quot;</span><span class="o">.</span><span class="n">format</span><span class="p">(</span><span class="n">epoch</span><span class="p">),</span> <span class="s2">&quot;Train MSE:&quot;</span><span class="p">,</span> <span class="n">mse_train</span><span class="p">)</span>
            
        <span class="n">params</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">(</span>
            <span class="p">[(</span><span class="n">var</span><span class="o">.</span><span class="n">name</span><span class="p">,</span> <span class="n">var</span><span class="o">.</span><span class="n">eval</span><span class="p">())</span> <span class="k">for</span> <span class="n">var</span> <span class="ow">in</span> <span class="n">tf</span><span class="o">.</span><span class="n">get_collection</span><span class="p">(</span>
                <span class="n">tf</span><span class="o">.</span><span class="n">GraphKeys</span><span class="o">.</span><span class="n">TRAINABLE_VARIABLES</span><span class="p">)])</span>
        
        <span class="n">hidden_val</span> <span class="o">=</span> <span class="n">hidden</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span>
            <span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">X</span><span class="p">:</span> <span class="n">X_train</span><span class="p">})</span>
        
        <span class="k">return</span> <span class="n">hidden_val</span><span class="p">,</span> <span class="n">params</span><span class="p">[</span><span class="s2">&quot;hidden/weights:0&quot;</span><span class="p">],</span> <span class="n">params</span><span class="p">[</span><span class="s2">&quot;hidden/biases:0&quot;</span><span class="p">],</span> <span class="n">params</span><span class="p">[</span><span class="s2">&quot;outputs/weights:0&quot;</span><span class="p">],</span> <span class="n">params</span><span class="p">[</span><span class="s2">&quot;outputs/biases:0&quot;</span><span class="p">]</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[13]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># train two AEs</span>

<span class="n">hidden_output</span><span class="p">,</span> <span class="n">W1</span><span class="p">,</span> <span class="n">b1</span><span class="p">,</span> <span class="n">W4</span><span class="p">,</span> <span class="n">b4</span> <span class="o">=</span> <span class="n">train_autoencoder</span><span class="p">(</span>
    <span class="n">mnist</span><span class="o">.</span><span class="n">train</span><span class="o">.</span><span class="n">images</span><span class="p">,</span> 
    <span class="n">n_neurons</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span> 
    <span class="n">n_epochs</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> 
    <span class="n">batch_size</span><span class="o">=</span><span class="mi">150</span><span class="p">)</span>

<span class="n">_</span><span class="p">,</span> <span class="n">W2</span><span class="p">,</span> <span class="n">b2</span><span class="p">,</span> <span class="n">W3</span><span class="p">,</span> <span class="n">b3</span> <span class="o">=</span> <span class="n">train_autoencoder</span><span class="p">(</span>
    <span class="n">hidden_output</span><span class="p">,</span> 
    <span class="n">n_neurons</span><span class="o">=</span><span class="mi">150</span><span class="p">,</span> 
    <span class="n">n_epochs</span><span class="o">=</span><span class="mi">4</span><span class="p">,</span> 
    <span class="n">batch_size</span><span class="o">=</span><span class="mi">150</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>
<div class="output_subarea output_stream output_stdout output_text">
<pre>0 Train MSE: 0.0193591
1 Train MSE: 0.0190697
2 Train MSE: 0.0188801
3 Train MSE: 0.0192353
0 Train MSE: 0.00428287
1 Train MSE: 0.00438113
2 Train MSE: 0.00464872
3 Train MSE: 0.00457076
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[15]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># create stacked AE by reusing weights &amp;and biases from above</span>

<span class="n">tf</span><span class="o">.</span><span class="n">reset_default_graph</span><span class="p">()</span>

<span class="n">n_inputs</span> <span class="o">=</span> <span class="mi">28</span><span class="o">*</span><span class="mi">28</span>

<span class="n">X</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">placeholder</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">float32</span><span class="p">,</span> <span class="n">shape</span><span class="o">=</span><span class="p">[</span><span class="kc">None</span><span class="p">,</span> <span class="n">n_inputs</span><span class="p">])</span>
<span class="n">hidden1</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">elu</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">W1</span><span class="p">)</span> <span class="o">+</span> <span class="n">b1</span><span class="p">)</span>
<span class="n">hidden2</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">elu</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">hidden1</span><span class="p">,</span> <span class="n">W2</span><span class="p">)</span> <span class="o">+</span> <span class="n">b2</span><span class="p">)</span>
<span class="n">hidden3</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">nn</span><span class="o">.</span><span class="n">elu</span><span class="p">(</span><span class="n">tf</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">hidden2</span><span class="p">,</span> <span class="n">W3</span><span class="p">)</span> <span class="o">+</span> <span class="n">b3</span><span class="p">)</span>
<span class="n">outputs</span> <span class="o">=</span> <span class="n">tf</span><span class="o">.</span><span class="n">matmul</span><span class="p">(</span><span class="n">hidden3</span><span class="p">,</span> <span class="n">W4</span><span class="p">)</span> <span class="o">+</span> <span class="n">b4</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Visualizing-Reconstructions">Visualizing Reconstructions<a class="anchor-link" href="#Visualizing-Reconstructions">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[19]:</div>
<div class="inner_cell">
    <div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># Load model, evaluates it on test set (reconstruction error)</span>
<span class="c1"># display original &amp; reconstructed images</span>

<span class="k">def</span> <span class="nf">show_reconstructed_digits</span><span class="p">(</span>
    <span class="n">X</span><span class="p">,</span> 
    <span class="n">outputs</span><span class="p">,</span> 
    <span class="n">model_path</span> <span class="o">=</span> <span class="kc">None</span><span class="p">,</span> 
    <span class="n">n_test_digits</span> <span class="o">=</span> <span class="mi">2</span><span class="p">):</span>
    
    <span class="k">with</span> <span class="n">tf</span><span class="o">.</span><span class="n">Session</span><span class="p">()</span> <span class="k">as</span> <span class="n">sess</span><span class="p">:</span>
        <span class="k">if</span> <span class="n">model_path</span><span class="p">:</span>
            <span class="n">saver</span><span class="o">.</span><span class="n">restore</span><span class="p">(</span><span class="n">sess</span><span class="p">,</span> <span class="n">model_path</span><span class="p">)</span>
            
        <span class="n">X_test</span> <span class="o">=</span> <span class="n">mnist</span><span class="o">.</span><span class="n">test</span><span class="o">.</span><span class="n">images</span><span class="p">[:</span><span class="n">n_test_digits</span><span class="p">]</span>
        <span class="n">outputs_val</span> <span class="o">=</span> <span class="n">outputs</span><span class="o">.</span><span class="n">eval</span><span class="p">(</span><span class="n">feed_dict</span><span class="o">=</span><span class="p">{</span><span class="n">X</span><span class="p">:</span> <span class="n">X_test</span><span class="p">})</span>

    <span class="n">fig</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">figure</span><span class="p">(</span><span class="n">figsize</span><span class="o">=</span><span class="p">(</span><span class="mi">8</span><span class="p">,</span> <span class="mi">3</span> <span class="o">*</span> <span class="n">n_test_digits</span><span class="p">))</span>
    
    <span class="k">for</span> <span class="n">digit_index</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n_test_digits</span><span class="p">):</span>
        
        <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="n">n_test_digits</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">digit_index</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span>
        <span class="n">plot_image</span><span class="p">(</span><span class="n">X_test</span><span class="p">[</span><span class="n">digit_index</span><span class="p">])</span>
        <span class="n">plt</span><span class="o">.</span><span class="n">subplot</span><span class="p">(</span><span class="n">n_test_digits</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="n">digit_index</span> <span class="o">*</span> <span class="mi">2</span> <span class="o">+</span> <span class="mi">2</span><span class="p">)</span>
        <span class="n">plot_image</span><span class="p">(</span><span class="n">outputs_val</span><span class="p">[</span><span class="n">digit_index</span><span class="p">])</span>
        <span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
        
<span class="c1">#show_reconstructed_digits(X, outputs, &quot;./my_model_all_layers.ckpt&quot;)</span>
<span class="n">show_reconstructed_digits</span><span class="p">(</span><span class="n">X</span><span class="p">,</span> <span class="n">outputs</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
hqEFQBr/ARqGrzwwyV+fAAAAAElFTkSuQmCC
"
>
</div>

</div>

<div class="output_area"><div class="prompt"></div>


<div class="output_png output_subarea ">
<img src="
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
"
>
</div>

</div>

</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Visualizing-Features">Visualizing Features<a class="anchor-link" href="#Visualizing-Features">&#182;</a></h3><ul>
<li>simplest method: find training instances that activate each hidden node the most. (best on upper layers, given their tendency to capture high-level features.)</li>
</ul>

</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Unsupervised-Pretraining-with-Stacked-Autoencoders">Unsupervised Pretraining with Stacked Autoencoders<a class="anchor-link" href="#Unsupervised-Pretraining-with-Stacked-Autoencoders">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Denoising-Autoencoders">Denoising Autoencoders<a class="anchor-link" href="#Denoising-Autoencoders">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Sparse-Autoencoders">Sparse Autoencoders<a class="anchor-link" href="#Sparse-Autoencoders">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Variational-Autoencoders">Variational Autoencoders<a class="anchor-link" href="#Variational-Autoencoders">&#182;</a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered">
<div class="prompt input_prompt">
</div>
<div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Other-Autoencoders">Other Autoencoders<a class="anchor-link" href="#Other-Autoencoders">&#182;</a></h3>
</div>
</div>
</div>
    </div>
  </div>
</body>
</html>
